Está en la página 1de 200

Modalidad Abierta y a Distancia

Programación orientada a objetos


Guía didáctica
160 horas

CARRERA CICLO

Tecnologías de la Información 3

ÁREA
TÉCNICA
Departamento de Ciencias de la Computación y Electrónica

Sección Tecnologías Avanzadas de la web y SBC

Programación orientada a objetos

Guía didáctica

Autor:
René Rolando Elizalde Solano

Asesoría virtual
www.utpl.edu.ec
PROGRAMACIÓN ORIENTADA A OBJETOS
Guía didáctica
René Rolando Elizalde Solano

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA

4.0, CC BY-NY-SA

Diagramación y diseño digital:


EDILOJA cía. Ltda
Telefax: 593-7-2611418
San Cayetano Alto s/n
www.ediloja.com.ec
edilojainfo@ediloja.com.ec
Loja-ecuador

Primera edición
ISBN digital - 978-9942-25-446-7

La versión digital ha sido acreditada bajo la licencia creative commons 4.0, CC BY-NY-SA:
Reconocimiento-No comercial-Compartir igual; la cual permite: copiar, distribuir y comunicar
públicamente la obra, mientras se reconozca la autoría original, no se utilice con fines comerciales
y se permiten obras derivadas, siempre que mantenga la misma licencia al ser divulgada. https://
creativecommons.org/licenses/by-nc-sa/4.0/deed.es

14 de febrero, 2019
2. Índice

2. Índice 4

3. Introducción 6

4. Bibliografía 7

4.1. Básica 7

4.2. Complementaria 7

5. Orientaciones generales para el estudio 9

6. Proceso de enseñanza-aprendizaje para el logro de competencias 12

PRIMER BIMESTRE

UNIDAD 1. INTRODUCCIÓN A PROGRAMACIÓN ORIENTADA A OBJETOS


12

1.1. El Paradigma de Programación Orientada a Objetos 12

1.2. Objetos y Clases 13

1.3. Uso Métodos y Encapsulación 19

1.4. Diagramas de Clases en Programación Orientada a Objetos 22

1.5. Uso de la Arquitectura modelo-vista-controlador 27

Autoevaluación 1 29

UNIDAD 2. ESTRUCTURA Y CREACIÓN DE ALGORITMOS ORIENTADOS


A OBJETOS 35

2.1. Creación de Miniespecificaciones Orientados a Objetos 35

2.2. Uso de Constructores 48

2.3. Uso de estructuras de selección simple y compuesta en POO 54

Autoevaluación 2 62

UNIDAD 3. ESTRUCTURAS DE REPETICIÓN EN PROGRAMACIÓN


ORIENTADA A OBJETOS 69

3.1. Uso de Estructura de repetición do-while en POO 69

3.2. Uso de Estructura de repetición while en POO 75

3.3. Uso de Estructura de repetición for en POO 81


Autoevaluación 3 88

SEGUNDO BIMESTRE

UNIDAD 4. ESTRUCTURAS DE DATOS EN PROGRAMACIÓN ORIENTADA


A OBJETOS 98

4.1. Uso de Arreglos de Tipos de Datos Simples o Primitivos 98

4.2. Uso de Arreglos de Tipos de Datos de Objetos 102

4.3. Ejercicios propuestos usando arreglos 105

Autoevaluación 4 117

UNIDAD 5. HERENCIA EN PROGRAMACIÓN ORIENTADA A OBJETOS 126

5.1. Concepto de Herencia 126

5.2. Uso de Diagramas de Clase con Herencia 128

5.3. Algoritmos Orientados a Objetos con Herencia 131

Autoevaluación 5 141

UNIDAD 6. POLIMORFISMO EN PROGRAMACIÓN ORIENTADA A


OBJETOS 157

6.1. Concepto de Polimorfismo 157

6.2. Uso de Diagramas de Clase con Polimorfismo 158

6.3. Algoritmos Orientados a Objetos con Polimorfismo 162

Autoevaluación 6 177

7. Solucionario 186

8. Referencias bibliográficas 199


Guía didáctica: Programación orientada a objetos

3. Introducción

Estimado estudiante, reciba una cordial bienvenida al presente período


académico. La asignatura de Programación Orientada a Objetos será abordada
a través de la Modalidad Abierta y a Distancia, dentro de la malla curricular de la
Carrera Tecnologías de la Información, corresponde al tercer ciclo de la unidad de
organización curricular básica cuenta con 120 horas y su campo de formación es
praxis profesional.

Con la asignatura se pretende vincular a los estudiantes en el ámbito de procesos


de identificación problemas y planteamientos de solución para aplicaciones
de software, así como en el modelamiento de procesos utilizando técnicas de
abstracción de la información.

La asignatura tiene singular importancia en la formación académica de la carrera,


pues forma al estudiante con sólidas bases para la construcción de algoritmos
que permitan resolver problemas reales mediante el enfoque orientado a objetos,
haciendo uso de la abstracción del mundo real, identificando las características
esenciales de sus componentes y modelando su comportamiento; además
permite la consolidación de bases teóricas y prácticas para el manejo del
paradigma orientada a objetos mediante el uso de lenguajes de alto nivel.

Para lograr las competencias de la asignatura, se plantea un conjunto de


temáticas distribuidas en unidades. En el primer bimestre se estudiarán las
unidades relacionadas a la introducción, estructura, creación de algoritmos y
manejo de estructuras de repetición en Programación Orientados a Objetos. Para
el segundo bimestre se plantea el estudio de estructuras de datos, herencia y
polimorfismo en Programación Orientada a Objetos.

Le deseamos el mejor de los éxitos en el estudio de la asignatura; cada


experiencia, esfuerzo y logro tendrán frutos en el corto plazo. ¡¡¡Empecemos!!!

6 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos

4. Bibliografía

4.1. Básica

López, L. (2013). Metodología de la programación orientada a objetos. México,


D.F: Alfaomega.

La presente obra posee una metodología que se basa en desarrollar


pilares fundamentales para el pensamiento computacional; además el texto
seleccionado para la asignatura cumple con los requerimientos adecuados
para ayudar en el aprendizaje de conocimientos relacionados con el
paradigma de programación orientado a objetos a través de conceptos y
ejemplos haciendo uso de miniespecificaciones o pseudocódigo y diagramas
de clases UML (Unified Modeling Language).

Elizalde, R. (2018). Guía didáctica de Programación Orientada a Objetos. Loja:


Universidad Técnica Particular de Loja.

La guía didáctica brinda al lector explicaciones a nivel teórico y práctico


sobre conceptos relacionados al paradigma de Programación Orientado
a Objetos, basados en el texto básico; además, se hace uso de
autoevaluaciones que permiten consolidar conceptos de las temáticas.

4.2. Complementaria

Deitel, H. M., y Deitel, P. J. (2012). Cómo programar en Java. México: Pearson


Educación.

La obra permite al lector estudiar de forma teórica y práctica en base a una


interesante metodología pedagógica, los conceptos, sintaxis y estructura
del paradigma de programación orientado a objetos en lenguaje de alto
nivel como Java; además, el número elevado de ejercicios permite reforzar

7 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos

conceptos; finalmente ideas abordadas en el libro son válidas para el


estudiante en todo el proceso de formación. Los capítulos que usted debería
poner énfasis en su lectura son los siguientes: Instrucciones de control
parte 1; instrucciones de control parte 2; métodos un análisis más detallado;
introducción a las clases y objetos; clases y objetos un análisis más
detallado y programación orientada a objetos herencia y polimorfismo

Fernández, A. (2013). Python 3 al descubierto. México: Alfaomega Grupo Editor.

Es importante la obra para los estudiantes, debido a que utiliza un lenguaje


de programación orientado a objetos de alto nivel llamado Python,
mismo que tiene características importantes para diversos ámbitos de
la computación; además, gracias al enfoque práctico de la obra, permite
exponer un conjunto de ejercicios prácticos, que serán de ayuda para
los noveles estudiantes en el ámbito de la programación. Usted puede
revisar los siguientes capítulos de preferencia, para reforzar aprendizaje
en el transcurso de la asignatura: capítulo 2. Estructuras y tipos de datos
básicos, capítulo 3. Sentencias de control, módulos y funciones, capítulo 4.
Orientación a objetos y apéndice b. Código de buenas prácticas.

8 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos

5. Orientaciones generales para el estudio

Queremos felicitar su compromiso y su determinación para emprender en un


nuevo reto en su formación académica. El estudiar en modalidad a distancia
necesita la generación de espacios propios, que permitan tomar las riendas
de la formación a nivel teórico y práctico desde aspectos base y transversales
como el esfuerzo, dedicación, planificación del tiempo, etc. A continuación, se
citan algunas pautas que le ayudarán a usted en el recorrido de las temáticas
académicas planificadas para la presente asignatura.

▪▪ Para la asignatura de Programación Orientada a Objetos usted posee


los siguientes materiales principales. El texto básico “Metodología de la
programación orientada a objetos” de Leobardo, L. R. (2013), contiene
actividades recomendadas, ejercicios resueltos y propuestos para cada
unidad. Además, cuenta con la presente guía didáctica, que le brinda
orientaciones sobre temas relevantes relacionados con el texto básico que
permita adquirir las competencias planteadas. Es importante mencionar que
la guía didáctica posee ejercicios resueltos y autoevaluaciones que permitan
articular de mejor forma los aprendizajes.

▪▪ Se sugiere que los estudiantes de la asignatura de Programación Orientada


a Objetos tengan un previo conocimiento sólido en fundamentos de la
programación, relacionados a temáticas que aborden la elaboración de
algoritmos, miniespecificaciones o pseudocódigo, manejo de estructuras
selectivas y repetitivas.

▪▪ Algunas técnicas de estudio que usted puede usar, para comprender de


mejor forma los conceptos a estudiar son: el uso de la lectura comprensiva y
la técnica del subrayado de las temáticas relevantes de los contenidos; y la
creación de organizadores gráficos propios de los temas de mayor nivel de
entendimiento.

9 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos

▪▪ Se aconseja desarrollar las autoevaluaciones propuestas en cada unidad


de estudio, pues le ayudarán a medir el nivel de entendimiento de los
contenidos y en caso de ser necesario enfocarse en los temas que debe
reforzar.

▪▪ Hacer uso de los servicios académicos de la institución como la biblioteca


virtual, usted puede acceder a la misma desde el campus universitario en los
diferentes centros de la Universidad a través de la siguiente dirección web
http://www.utpl.edu.ec/biblioteca.

▪▪ Se recomienda las siguientes condiciones para que su momento de estudio


sea óptimo: tenga un ambiente adecuado para el estudio, un lugar con luz
suficiente y libre de ruidos que no obstaculicen su concentración, elabore un
calendario de estudio, para distribuir adecuadamente su tiempo para cada
una de sus asignaturas.

▪▪ Se invita a revisar conjuntamente el texto básico y la guía didáctica en


todas las temáticas planificadas para cada bimestre; consulte la bibliografía
complementaria con el propósito de indagar en los temas desde el punto de
vista de otros autores.

▪▪ La interactividad es muy importante en la modalidad a distancia, por lo que,


adicional al material básico usted contará con recursos tecnológicos que le
servirán para profundizar o complementar lo aprendido. Se sugiere ingresar
de manera frecuente al Entorno Virtual de Aprendizaje (EVA) y revisar
los anuncios académicos e informativos que se colocará semanalmente;
además, usted podrá hacer uso del servicio de mensajería instantánea.

▪▪ Los recursos y actividades síncronas y asíncronas permiten el intercambio


de opiniones y planteamiento de inquietudes, es por ello que se sugiere
participar en las actividades propuestas en el Entorno Virtual de Aprendizaje
(EVA) como foros, chats y cuestionarios de refuerzo; además, recuerde
hacer uso del correo institucional como una vía de comunicación importante
entre usted y su docente.

10 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos

▪▪ Se recomienda la revisión antes y durante el ciclo académico del plan


docente de la asignatura, en el mismo usted encontrará la planificación
microcurricular de las actividades de aprendizaje a desarrollar en cada
semana de estudio; además se puede informar sobre la forma de evaluación
de la asignatura.

▪▪ En base del calendario académico, deberá desarrollar y entregar una tarea


de aplicación y experimentación en ambos bimestres, para el desarrollo
de la misma se sugiere realizarla de forma periódica y siempre siguiendo
las indicaciones de su docente; además usted en el transcurso del período
académicos deberá cumplir de forma obligatoria con la rendición de
evaluaciones presenciales en el primer y segundo bimestre, de acuerdo a
fechas previamente establecidas y socializadas por la institución.

Finalmente, estimado estudiante reiterar la felicitación por asumir un importante


reto académico que esperamos cumpla sus expectativas; recuerde que, en el
camino del aprendizaje usted no está solo, tiene el acompañamiento de un equipo
docente que le brindará ayuda en todo momento.

11 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos

6. Proceso de enseñanza-aprendizaje para el logro de competencias

PRIMER BIMESTRE

UNIDAD 1. INTRODUCCIÓN A PROGRAMACIÓN ORIENTADA A OBJETOS

Apreciados estudiantes iniciemos nuestro trabajo académico haciendo una


revisión de la presente guía de estudio que tiene como eje central el estudio a
nivel conceptual y práctico del paradigma de Programación Orientada a Objetos
POO u Object Oriented Programming (OPP) en inglés.

1.1. El Paradigma de Programación Orientada a Objetos

El texto básico en el capítulo Introducción a la programación sección


Evolución de los paradigmas de programación, realiza una clara descripción
sobre la evolución de los paradigmas de programación. El paradigma de
orientación a objetos empezó a ganar notoriedad entre los años 80 y 90; a través
del uso de POO, los desarrolladores pudieron manejar de mejor forma los niveles
de complejidad de un determinado tema; de igual forma la reutilización de código
forma parte fundamental en el paradigma de programación.

A través de la Programación Orientada a Objetos la construcción de soluciones


tiene una vinculación con la forma de resolver problemas en la vida real. En lo
posterior usted estudiará conceptos e ideas que le ayudarán a entender como
plasmar soluciones informáticas basadas en POO.

12 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

1.2. Objetos y Clases

1.2.1. Objetos

Para el estudio del presente apartado, le invito a revisar el contenido del texto
básico en el capítulo Programación orientada a objetos usando el diagrama de
clases sección Objetos.

Luego de tener una idea sobre el paradigma de Programación Orientada a


Objetos, en base al punto 1.1. de la presente guía, es importante tomar en
consideración algunos conceptos fundamentales que permitan clarificar el uso del
paradigma propuesto en la vida real.

Como se menciona en le texto básico en la sección Objetos, la Programación


Orientada a Objetos tiene las siguientes características fundamentales:

▪▪ Objetos
▪▪ Clases
▪▪ Encapsulación
▪▪ Herencia
▪▪ Polimorfismo

Para solucionar problemáticas a través del paradigma de Orientación a Objetos,


se debe representar la solución como una interacción de objetos, que permiten
realizar entrada de datos, procesamiento de información y salida de datos para
una solución propuesta.

En la sección Objetos del texto básico, se menciona que un objeto es todo lo que
involucra el dominio del problema planteado; es decir, son entidades, sujetos o
cosas que se necesitan para plasmar la solución a nivel informático.

Los objetos están formados por dos elementos como se menciona en la sección
Objetos: ¿Cómo están formados los objetos? del texto básico:

13 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

▪▪ Datos, es el conjunto de atributos que describen la forma o apariencia de un


objeto.

▪▪ Métodos, es el conjunto de acciones que se implementan para manipular los


datos de entrada, proceso y datos de salida.

Importante: estimado lector, en otros paradigmas de programación los métodos


tienen otras denominaciones como: procedimientos, módulos, funciones,
subrutinas, entre otros

Figura 1. Diagrama de un objeto


Elaborado por: Elizalde, R. (2018)

La forma de representar un objeto de manera gráfica es la siguiente, como se


muestra en la Figura 1:

En la representación de la Figura 1, se usa un rectángulo que está formado por


las siguientes partes:

▪▪ En la parte superior, se ubica el nombre de objeto (se sugiere que el nombre


esté subrayado).
▪▪ En la parte media, se ubica el conjunto de datos o atributos.
▪▪ (Opcional) En la parte inferior, se describen los métodos que implementan
las operaciones que se deben realizar para la manipular los datos.

Tomando en consideración las fases para el desarrollo de programas: definición


del problema, análisis de problema, diseño del programa, codificación del

14 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

programa, implantación del programa y mantenimiento del programa; es


importante saber el ¿cómo? y el ¿cuándo? identificar los objetos, en la sección
8.1.3 del texto básico se hace una explicación, en base a ello, se puede
manifestar que la fase donde se identifican los objetos y sus relaciones es el
análisis del problema.

Ejemplo 1.

1. Definición del problema (fase 1 del proceso de programación).

Se requiere elaborar un programa que permita calcular el valor de matricula


de los estudiantes de una universidad.

2. Análisis del problema (fase 2 del proceso de programación).

• Planteamiento del problema.

En una institución de educación superior determinada se tiene


estudiantes, por cada estudiante se posee los siguientes datos:
nombres, apellidos, identificación, número de créditos que toma y el
costo fijo por cada crédito. Cuando el estudiante realiza su proceso de
matrícula se necesita emitir un reporte con la siguiente información:
nombres del estudiante, apellidos del estudiante, identificación
del estudiante y el valor de matrícula a cancelar. La matrícula del
estudiante se la obtiene multiplicando el número de créditos por el
costo fijo que tiene cada crédito.

Es decir, se tiene las siguientes entradas, procesos y salidas.

Entradas: nombres, apellidos, identificación, número de créditos, costo


fijo de cada crédito.

Procesos: calcular el valor de matrícula, multiplicando el número de


créditos por el costo fijo de cada crédito.

15 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Salidas: se debe generar un reporte con los datos del estudiante


(nombres, apellidos, identificación y costo de la matrícula.

• Identificar los objetos.

Como se menciona en el texto básico, luego de estudiar la


problemática planteada se debe buscar los sustantivos presentes en
el planteamiento del problema, es decir, los sustantivos encontrados
representan los objetos. En la problemática que se plantea, se
menciona el sustantivo: estudiantes.

Se puede representar una colección, cada elemento de la colección


representa un objeto de estudiantes, la forma gráfica de representar es
la siguiente (Figura 2):

Figura 2. Diagrama de Objetos


Elaborado por: Elizalde, R. (2018)

La Figura 2 muestra una colección de objetos que representan cada uno a


un estudiante; cada objeto tiene la misma estructura, es decir comparten los
mismo datos o atributos.

1.2.2. Clases

Para el estudio del presente apartado, se solicita revisar el contenido del texto
básico en el capítulo Programación orientada a objetos usando el diagrama de
clases sección Clases y su relación con los objetos.

16 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Otras de las características importantes en el paradigma Orientado a Objetos


es la clase. Como lo menciona el texto básico en su sección 8.2, una clase es la
representación abstracta que agrupa a elementos u objetos que se caracterizan
por tener:

▪▪ Una misma estructura (datos).


▪▪ Un mismo comportamiento (métodos).

Se puede expresar una clase con una plantilla que permitirá crear n número de
objetos, que compartan las mismas características.

La tercera fase del desarrollo de programas tiene tres subfases:

▪▪ Diseñar el diagrama de clases.


▪▪ Diseñar la solución de las clases en psuedocódigo o miniespecificación
▪▪ Realizar las pruebas a la solución haciendo uso de pruebas de escritorio.

Determinar una clase.

Se va a describir la primera subfase, la forma de crear o representar una clase


a través de diagramas. Tomando en consideración que ya se tiene conocimiento
de la selección u obtención de los objetos de las problemáticas planteadas (un
sustantivo será un objeto), los mismos son el punto de partida para la obtención
de las clases. Un conjunto de objetos es una clase.

En base al ejemplo 1, en el cual se establece una problemática, luego del análisis


del problema se establece una colección de objetos estudiantes, dicha colección
se la debe representar de forma abstracta de tal forma que sea una plantilla
para cada elemento de la colección, es decir, se debe crear una clase llamada
Estudiante, que se la representa mediante el símbolo que muestra la siguiente
Figura 3:

17 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Figura 3. Diagrama de Clase.


Elaborado por: Elizalde, R. (2018)

En la Figura 3, se hace la representación de una clase llamada “Estudiante”


mediante el uso o diagramación de un rectángulo, en ocasiones al rectángulo
se lo puede dividir en 3 partes, siempre en la parte superior se denota el
nombre de la clase.

Representar una clase y sus instancias.

Como lo menciona el texto básico en el capítulo Programación orientada a


objetos usando el diagrama de clases sección Representación de la clase
y sus instancias, cada clase creada será un nuevo tipo de dato con el que se
puede trabajar, para poder utilizar dichos tipos de datos se debe crear instancias
u ocurrencias específicas. A continuación, se representa de forma gráfica en la
Figura 4, la relación entre una clase y sus instancias.

Figura 4. Diagrama de Clase y Objetos


Elaborado por: Elizalde, R. (2018)

En la Figura 4 se tiene una clase llamada Estudiante, de la misma se generan tres


instancias representadas en los objetos: objetoEstudiante1, objetoEstudiante2

18 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

y objetoEstudiante3. En la Figura 4 mencionada se usa una línea entrecortada


para representar la relación entre una clase y un objeto, la cual indica lo siguiente:

▪▪ objetoEstudiante1 “es una instancia de” o “es un objeto de” Estudiante.


▪▪ objetoEstudiante2 “es una instancia de” o “es un objeto de” Estudiante.
▪▪ objetoEstudiante3 “es una instancia de” o “es un objeto de” Estudiante.

Estimado estudiante a través del siguiente enlace usted puede descargar los
archivos del ejemplo anterior:

Diagrama Representación de una clase y sus instancias

1.3. Uso Métodos y Encapsulación

Para el estudio del presente apartado, se solicita revisar el contenido del texto
básico en el capítulo Programación orientada a objetos usando el diagrama de
clases sección Métodos y encapsulación.

1.3.1. Métodos

En el capítulo Programación orientada a objetos usando el diagrama de


clases sección Métodos del texto básico se manifiesta que los métodos son las
acciones que implementan el comportamiento de un objeto, por ejemplo: realizar
cálculos, realizar una presentación o imprimir, solicitar ingreso de datos, entre
otros.

1.3.2. Encapsulación

En referencia a la encapsulación, el texto básico en el capítulo Programación


orientada a objetos usando el diagrama de clases sección Encapsulación,
indica que una clase es un tipo de dato abstracto formado por dos elementos:
datos y métodos, y la encapsulación trata el hecho de colocar de manera
integrada los datos y lo métodos dentro de un objeto.

19 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Importante: “Uno de los principios más importantes de la programación orientada a


objetos es que el programador debe pensar en el código y los datos juntos durante
el diseño del programa”.

Se debe considerar dos situaciones al momento de diseñar la estructura de una


clase:

▪▪ Datos que representan a los objetos de la clase; existen dos tipos, el primero
hace referencia a los datos que son ingresados como de entrada y los
segundos son los que se debe generar en base a cálculos.

▪▪ Métodos que implementan las acciones de los objetos; aquí se habla de dos
tipos de métodos.

1. Los métodos que establecen (setters) valores a los datos del objeto,
pueden ser los datos de entrada o los datos generados por cálculos.

2. Los métodos que acceden u obtienen (getters) valores de los datos con
el objetivo de manipularlos para hacer algún proceso o darles salida o
imprimir.

Identificación de los métodos

Es importante manifestar que los métodos se los obtiene a partir de los verbos
presentes en la problemática planteada.

Importante: para establecer (set) u obtener (get) los valores de los datos del
objeto (atributos en la clase) es típico crear métodos asociados a cada una de
las acciones que se desea realizar; es decir, evitar leer o acceder a sus valores
de manera directa. La encapsulación debe ser respetada al máximo posible en la
programación orientada a objetos.

20 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Ejemplo 2.

En base al ejemplo 1, se plantea elaborar un programa que permita calcular el


valor de matrícula de los estudiantes de una universidad, se tiene los siguientes
datos:

▪▪ nombresEstudiante, que se asocia a los nombres del estudiante.


▪▪ apellidosEstudiante, que se asocia a los apellidos del estudiante.
▪▪ identificacionEstudiante, se refiere a la identificación del estudiante.
▪▪ valorCredito, valor de cada crédito.
▪▪ numeroCredito, número de créditos.
▪▪ costoMatricula, es el costo de matrícula.

Para cada dato se necesita crear los métodos establecer (set) u obtener (get):

▪▪ Para el dato: nombresEstudiante

Se crea los métodos:

establecerNombresEstudiante(), permite establecer el valor del dato.


obtenerNombresEstudiante(), permite acceder o imprimir el valor del dato.

▪▪ Para el dato: apellidosEstudiante

Se crea los métodos:

establecerApellidoEstudiante(), permite establecer el valor del dato.


obtenerApellidoEstudiante(), permite acceder o imprimir el valor del dato.

▪▪ Dato: identificacionEstudiante

Se crea los métodos:

21 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

establecerIdentificacionEstudiante (), permite establecer el valor del dato.


obtenerIdentificacionEstudiante (), permite acceder o imprimir el valor del
dato.

▪▪ Dato: costoMatricula

calcularCostoMatricula(), permite calcular o establecer el valor del dato.


obtenerCostoMatricula(), permite acceder o imprimir el valor del dato.

▪▪ Dato: valorCredito

establecerValorCredito(), permite establecer el valor del dato.


obtenerValorCredito(), permite acceder o imprimir el valor del dato.

▪▪ numeroCredito, número de créditos

establecerNumeroCredito(), permite establecer el valor del dato.


obtenerNumeroCredito(), permite acceder o imprimir el valor del dato.

Importante, para diferenciar de manera visual, los métodos que permiten


un proceso de establecer o setter inician con la palabra “establecer” o
“calcular” y por otro lado los métodos que realizan un proceso de obtener o
getter inician con la palabra “obtener”

1.4. Diagramas de Clases en Programación Orientada a Objetos

Para el estudio del presente apartado, se solicita revisar el contenido del texto
básico en el capítulo Programación orientada a objetos usando el diagrama de
clases sección Diseño del diagrama de clases.

22 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Figura 5. Diagrama de clase con datos y métodos


Elaborado por: Elizalde, R. (2018)

En los apartados anteriores se ha hace referencia a la creación de los datos y los


métodos que usan los objetos; sección Diseño del diagrama de clases del texto
básico, se indica la forma de diseñar la estructura o el diagrama de una clase.
En la Figura 5 se hace la representación gráfica de una clase que incluye datos y
métodos.

En relación a la Figura 5, se puede describir lo siguiente:

▪▪ NombreClase: es el nombre de la clase.

▪▪ dato1, dato2, dato3, datoN: es el conjunto de datos (atributros) que


representa a cada objeto de la clase.

▪▪ metodo1(), metodo2(), metodo3(), métodoN(): representa el conjunto de


métodos que permiten establecer (set) u obtener (get) los valores de los
objetos de la clase.

▪▪ + ; es el modificador de acceso o visibilidad.

1.4.1. Modificadores de Acceso

Los modificadores de acceso o visibilidad que puede tener un dato o método son
los que se describen en la Tabla 1, donde se indica el nombre del modificador de
acceso que pueden tener conjuntamente con el símbolo que lo representa.

23 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Tabla 1. Modificadores de Acceso


Modificador de Acceso Símbolo
Privado o Private -
Protegido o Protected #
Público o Public +
Estático o Static =
Abstracto o Abstract *

Visibilidad para los Datos

En la Tabla 2, se hace referencia a los modificadores de acceso relacionados con


la visibilidad que puedan tener los datos en una clase; se indica el símbolo que se
usa y una descripción de cada modificador.

Tabla 2. Visibilidad para los datos


Modificador de Acceso Símbolo Uso de los Datos
Privado o Private - Su visibilidad solo permite su uso por los
métodos de la misma clase.

Importante, por defecto los datos son


privados.
Protegido o Protected # Pueden ser vistos y utilizados por
los métodos de su misma clase y los
métodos de las subclases que derivan
de la clase inicial declarada, o de otras
subclases pertenecientes a un mismo
paquete (carpeta que organiza clases).
Público o Public + Pueden ser vistos y utilizados por los
métodos de la misma clase y métodos de
otras clases, sin ninguna restricción.
Estático o Static = La característica es que son únicos para
toda la clase. No pertenecen a ninguna
instancia de la clase, pero lo importante
es que pueden ser vistos y utilizados por
cualquier instancia de la clase.

24 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Visibilidad para los Métodos

En la Tabla 3, se hace referencia a los modificadores de acceso relacionados con


la visibilidad que puedan tener los métodos en una clase; se indica el símbolo que
se usa y una descripción de cada modificador.

Tabla 3. Visibilidad de Métodos


Modificador de Acceso Símbolo Uso de los Datos
Privado o Private - Su visibilidad solo permite su uso por los
métodos de la misma clase.
Protegido o Protected # Pueden ser vistos y utilizados por
los métodos de su misma clase y los
métodos de las subclases que derivan
de la clase inicial declarada, o de otras
subclases pertenecientes a un mismo
paquete (carpeta que organiza clases).
Público o Public + Pueden ser vistos y utilizados por los
métodos de la misma clase y métodos de
otras clases, sin ninguna restricción.

Importante, por defecto los datos son


públicos.
Estático o Static = La característica es que son únicos para
toda la clase. No pertenecen a ninguna
instancia de la clase, pero lo importante
es que pueden ser vistos y utilizados por
cualquier instancia de la clase.
Abstracto o Abstract * No poseen una implementación, por lo
tanto, se obliga a su implementación en
las subclases que derivan de la clase que
contiene el método abstracto.

Aplicando los conceptos de modificadores de acceso para indicar la visibilidad


de los datos y métodos en el ejemplo 2, se tiene como resultado el siguiente
diagrama de clases (Figura 6).

25 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Figura 6. Diagrama de Clase – Atributos y Métodos


Elaborado por: Elizalde, R. (2018)

En la Figura 6 se indica que los datos de la clase estudiante: nombresEstudiante,


apellidosEstudiante, identificacionEstudiante, valorCredito, numeroCredito,
costoMatricula tiene una visibilidad Público o Public; además los métodos
de la clase: establecerNombresEstudiante(), obtenerNombresEstudiante(),
establecerApellidoEstudiante(), obtenerApellidoEstudiante(),
establecerIdentificacionEstudiante(), obtenerIdentificacionEstudiante(),
calcularCostoMatricula(), obtenerCostoMatricula(), establecerValorCredito(),
obtenerValorCredito(), establecerNumeroCredito(), obtenerNumeroCredito(),
establecerNumeroCredito() y obtenerNumeroCredito() tiene una visibilidad Públic
o Public.

Estimado estudiante a través del siguiente enlace usted puede descargar los
archivos del ejemplo anterior:

Diagrama Representación de diagrama de clase con atributos y métodos

26 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

1.5. Uso de la Arquitectura modelo-vista-controlador

Para el estudio del presente apartado, se solicita revisar el contenido del texto
básico en el capítulo Programación orientada a objetos usando el diagrama de
clases sección Arquitectura modelo-vista-controlador.

La arquitectura modelo-vista-controlador se usa en el desarrollo de soluciones


bajo el paradigma de programación orientado a objetos, dicha arquitectura está
conformada por tres capas:

▪▪ Modelo, conjunto de clases asociadas al dominio del problema.


▪▪ Vista o interfaz de usuario, hace referencia a lo que el usuario visualiza para
poder interactuar con el programa.
▪▪ Controlador, permite a los usuarios su interacción con las vistas de tal
manera que puedan utilizar el modelo solución del problema.

En la Figura 7, se hace una representación gráfica de una arquitectura modelo-


vista-controlador para programas complejos.

Figura 7. Modelo Vista Controlador Complejo


Elaborado por: Elizalde, R. (2018)

Importante, la flecha punteada hace referencia a una relación de dependencia que


denota que la clase Controlador utiliza a las clases Modelo y Vista.

Cuando los programas no suponen una complejidad alta, el controlador incluye


tácitamente a la vista, simplificando la arquitectura como se muestra en la Figura
8:

27 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Figura 8. Modelo Vista Controlador Simplificado


Elaborado por: Elizalde, R. (2018).

Al culminar nuestra primera unidad, es momento de verificar


nuestros conocimientos con la realización y desarrollo de la
autoevaluación.

Listo para iniciar. ¡Adelante!

28 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Autoevaluación 1

A continuación, se presentan preguntas relacionadas a programación


orientada a objetos usando diagramas de clase. Se solicita revisar la
unidad 1 de la presente guía y el capítulo Programación orientada a
objetos usando el diagrama de clases del texto básico para contestar
las interrogantes. La autoevaluación permitirá a usted, reafirmar los conceptos
estudiados.

Los siguientes enunciados son de opción múltiple, cada uno de ellos tiene una
sola respuesta correcta. Lea atentamente cada pregunta y seleccione la opción
que usted considere como válida en cada situación.

1. Para representar soluciones a través de la Programación Orientada a


Objetos, ¿cómo se debe representar a la solución?

a. Manejo aislado de objetos.


b. Interactividad de objetos.
c. Sin manejo de objetos.

2. ¿Cómo se identifican los objetos?

a. En una problemática los objetos son los verbos.


b. En una problemática los objetos son los sustantivos.
c. En una problemática los objetos son los adverbios.

3. ¿Cómo se conforman los objetos?

a. Se forman con datos(atributos) y métodos.


b. Se forman con clases y subclases.
c. Se forman con datos(atributos) protegidos y datos privados.

29 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

4. ¿Cuáles son otras denominaciones que se le pueden dar a los métodos?

a. Funciones, clases.
b. Procedimientos, funciones.
c. Objetos, funciones.

5. Identifique la forma correcta de representar un objeto en diagrama.

a. Opción A.
b. Opción B.
c. Opción C.

6. Se requiere representar una colección de objetos que contenga los


siguientes datos: nombres, apellidos, identificación, número de créditos.
Identifique la colección correcta para lo solicitado.

30 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

a. Opción A.
b. Opción B.
c. Opción C.

7. Identifique las características de una clase en Programación Orientada a


Objetos.

a. Conjunto de objetos que tienen los mismos datos y métodos.


b. Conjunto de objetos que tienen los mismos datos y diferentes métodos.
c. Conjunto de objetos que tienen diferentes datos y métodos.

31 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

8. Identifique la forma correcta de representar una clase y sus instancias, en


base a las siguientes gráficas.

a. Opción A.
b. Opción B.
c. Opción C.

32 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

9. Identifique el diagrama de una clase que contenga las siguientes


características:

• Datos o Atributos: 1 atributo privado y 1 atributo protegido.


• Métodos: 1 método público, 2 métodos protegidos.

a. Opción A.
b. Opción B.
c. Opción C.

10. Identifique las tres capas de la arquitectura que se usa en el desarrollo de


soluciones bajo el paradigma orientado a objetos.

a. Modelo-Vista-Objetos.
b. Modelo-Vista-Controlador.
c. Modelo-BaseDeDatos-Controlador.

33 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Felicito su empeño y dedicación, ahora es momento de iniciar una


nueva unidad de estudio.

34 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

UNIDAD 2. ESTRUCTURA Y CREACIÓN DE ALGORITMOS ORIENTADOS A


OBJETOS

Estimados estudiantes les invito a iniciar el estudio de la presente


unidad revisando el contenido del capítulo Programación orientada a
objetos aplicando la estructura de secuenciación.

2.1. Creación de Miniespecificaciones Orientados a Objetos

Empecemos analizando la creación de miniespecificaciones orientadas a objetos.


En el texto básico en el capítulo Programación orientada a objetos aplicando
la estructura de secuenciación sección Diseño de algoritmos OO usando
la secuenciación en seudocódigo se hace referencia al formato que se debe
utilizar para la creación de miniespecificación o pseudocódigo bajo el paradigma
de programación orientado a objetos de la siguiente forma:

Algoritmo NOMBRE_DEL_ALGORITMO

Clase NombreClase1
1. Declarar
Datos
Objetos
Variables

2. Método funcionUno()
2.1. Acción 1
2.2. Acción 2
2.3. Fin Método funcionUno

3. Método funcionN()
3.1. Acción 1
3.2. Acción 2
3.3. Fin Método funcionN
Fin Clase NombreClase1

35 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Clase NombreClase2
1. Declarar

2. Método funcionUno()
2.1. Acción 1
2.2. Fin Método funcionUno

3. Método funcionN()
3.1. Acción 1
3.2. Fin Método funcionN
Fin Clase NombreClase1

Clase NombreClaseN
1. Declarar

2. Método principal()
2.1. Acción 1
2.2. Fin Método principal

3. Método funcionUno()
3.1. Acción 1
3.2. Fin Método funcionUno

4. Método funcionN()
4.1. Acción 1
4.2. Fin Método funcionN
Fin Clase NombreClase1

Fin

En los ejemplos de los apartados y unidades posteriores se usa el formato


descrito anteriormente, por tal razón, se solicita tomar en consideración los
siguientes aspectos:

36 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

▪▪ Para dar inicio a la miniespecificación se usa la forma

Algoritmo NOMBRE_DEL_ALGORITMO

Donde, la palabra reservada es Algoritmo y luego se escribe el nombre del


algoritmo o problema a solucionar.

▪▪ Para codificar las clases, se usa la forma:

Clase NombreClaseN

Donde, la palabra reservada es Clase y luego se escribe el nombre de la


clase.

▪▪ En la clase o clases creadas, se tiene dos secciones establecidas, la primera


tiene la forma:

1. Declarar
Datos
Objetos
Variables
En el espacio indicado, se declaran los datos a usar para el conjunto de
objetos representados a través de las clases.
La segunda parte tiene la forma siguiente:

2. Método funcionUno()

2.1. Acción 1
2.2. Acción 2
2.3. Fin Método funcionUno

Es la forma establecida para crear un método, se usa la palabra reservada


Método seguido del nombre del método, no olvidar de escribir los paréntesis
al final ().

37 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

▪▪ Para terminar un método se usa la forma:

Fin Método funcionUno

▪▪ Para terminar una clase se usa la forma:

Fin Clase NombreClase1

▪▪ Para terminar el algoritmo se usa la palabra:

Fin

Ejemplo:

Problemática

Se plantea elaborar un programa que permita calcular el valor de matrícula de los


estudiantes de una universidad, en base a los siguientes datos:

▪▪ nombresEstudiante, que se asocia a los nombres del estudiante


▪▪ apellidosEstudiante, que se asocia a los apellidos del estudiante
▪▪ identificacionEstudiante, se refiere a la identificación del estudiante
▪▪ valorCredito, valor de cada crédito.
▪▪ numeroCredito, número de créditos.
▪▪ costoMatricula, es el costo de matrícula.

Diagrama de clases

El diagrama de clases para la problemática está representado en la

Figura 9, mediante dos clases: Clase Estudiante y Clase EjecutaEstudiante.

38 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Figura 9. Diagrama de Clases


Elaborado por: Elizalde, R (2018).

Solución en miniespecificación.

Algoritmo CALCULAR COSTO DE MATRICULA DE UN ESTUDIANTE

Clase Estudiante

1. Declarar
nombresEstudiante: Cadena
apellidosEstudiante: Cadena
identificacionEstudiante: Cadena
valorCredito: Real
numeroCreditos: Entero
costoMatricula: Real

2. Método establecerNombresEstudiante(nom: Cadena)


a. nombresEstudiante = nom
b. Fin Método establecerNombresEstudiante

3. Método establecerApellidoEstudiante(ape: Cadena)


a. apellidosEstudiante = ape
b. Fin Método establecerApellidoEstudiante

39 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

4. Método establecerIdentificacionEstudiante(iden: Cadena)


a. identificacionEstudiante = iden
b. Fin Método establecerIdentificacionEstudiante

5. Método establecerValorCredito(valor: Real)


a. valorCredito = valor
b. Fin Método establecerValorCreditor

6. Método establecerNumeroCreditos(numero: Real)


a. numeroCreditos = numero
b. Fin Método establecerNumeroCreditos

7. Método calcularCostoMatricula()
a. costoMatricula = numeroCreditos * valorCredito
b. Fin Método calcularCostoMatricula

8. Método obtenernombresEstudiante() : Cadena


a. return nombresEstudiante
b. Fin Método obtenernombresEstudiante

9. Método obtenerApellidoEstudiante() : Cadena


a. return apellidosEstudiante
b. Fin Método obtenerApellidoEstudiante

10. Método obtenerIdentificacionEstudiante() : Cadena


a. return identificacionEstudiante
b. Fin Método obtenerIdentificacionEstudiante

11. Método obtenerNumeroCreditos() : Entero


a. return numeroCreditos
b. Fin Método obtenerNumeroCreditos

40 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

12. Método costoMatricula() : Real


a. return costoMatricula
b. Fin Método costoMatricula

Fin Clase Estudiante

Clase EjecutaEstudiante
1. Método principal()
a. Declarar Variables
nombresEst: Cadena
apellidosEst: Cadena
identificacionEst: Cadena
valorCred: Real
numeroCred: Entero

b. Declarar,crear e iniciar objeto


Estudiante estudiante = new Estudiante()

c. Solicitar nombre de estudiante,


apellido de estudiante
identificación de estudiante
número de créditos
valor de cada crédito

d. Leer nombresEst,
apellidosEst,
identificacionEst,
numeroCredito,
valorCredito

41 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

e. Establecer estudiante.establecerNombresEstudiante(nombresEst),
estudiante.establecerApellidoEstudiante(apellidosEst),
estudiante.establecerIdentificacionEstudiante(identificacionEst),
estudiante.establecerNumeroCredito(numeroCredito),
estudiante.establecerValorCredito(valorCredito)

f. Calcular estudiante.calcularCostoMatricula()

g. Imprimir estudiante.obtenernombresEstudiante(),
estudiante.obtenerApellidoEstudiante(),
estudiante.obtenerIdentificacionEstudiante()
estudiante.obtenerCostoMatricula()

h. Fin Método principal

Fin Clase EjecutaEstudiante


Fin

Explicación del ejemplo:

▪▪ El algoritmo en miniespecificación o pseudocódigo se denomina CALCULAR


EL VALOR DE MATRICULA DE UN ESTUDIANTE.

▪▪ La miniespecificación tiene dos clases: Estudiante y EjecutaEstudiante.

▪▪ La clase Estudiante es la clase modelo que tiene por objetivo representar al


conjunto de objetos estudiantes.

▪▪ En la clase Estudiante en el punto 1, se declara los datos involucrados en la


problemática:

nombresEstudiante: Cadena
apellidosEstudiante: Cadena
identificacionEstudiante: Cadena

42 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

valorCredito: Real
numeroCreditos: Entero
costoMatricula: Real

Importante, la declaración de datos es equivalente a expresar “declaración de


variables” o “declaración de atributos”.

▪▪ En la clase Estudiante en el punto 2, se declara un método llamado


establecerNombresEstudiante, que permite establecer o colocar el valor
que se le desea asignar al dato (atributo o variable) nombresEstudiante. La
forma para realizar el procedimiento mencionado es:

Método establecerNombresEstudiante(nom: Cadena)


a. nombresEstudiante = nom
b. Fin Método establecerNombresEstudiante

En el paréntesis del método establecerNombresEstudiante existe una


instrucción:

(nom: Cadena)

Dicha expresión le indica al método que recibe un parámetro llamado nom que
debe ser de tipo de dato Cadena; además, cuando se lo llame al método en algún
proceso desde la misma clase o una clase diferente, se debe tener la precaución
de enviar como parámetro una cadena.

En la línea de código a del método establecerNombresEstudiante , se está


realizando una asignación de valor, para el caso, se está asignando el valor de
nom al dato (variable o atributo) nombresEstudiante.

La forma descrita en el punto 2 de la clase Estudiante se repite en los métodos


establecer (set) de la clase para todos los datos (variables o atributos).

43 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

▪▪ En el punto 7 de la clase Estudiante se hace referencia al método


calcularCostoMatricula

Método calcularCostoMatricula()
a. costoMatricula = numeroCreditos * valorCredito
b. Fin Método calcularCostoMatricula

Este método difiere de los demás métodos establecer debido a que no


recibe ningún parámetro, además dentro del cuerpo del método en la línea
a se hace una asignación de valor para el dato costoMatricula mediante
un proceso que involucra los valores de los datos numeroCreditos y
valorCredito.

▪▪ En el punto 8 de la clase Estudiante, se declara un método denominado


obtenerNombresEstudiante; la característica de los métodos obtener (get)
es poder acceder a un valor de un dato (variable).

Método obtenernombresEstudiante() : Cadena


a. return nombresEstudiante
b. Fin Método obtenernombresEstudiante

En la línea a dentro del cuerpo del método, lo que se hace es usar la palabra
reservada return para retornar el valor que se necesite, para el ejemplo es el
valor de nombresEstudiante.

Además, los dos puntos (:) luego de los paréntesis en la declaración en la


cabecera del método:

() : Cadena

determina que el tipo de dato a devolver en el método debe ser de manera


obligatorio una Cadena.

44 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

La forma descrita en el punto 8 de la clase Estudiante se repite en los


métodos obtener (get) de todos los datos (variables o atributos) que
pertenecen a la clase.

▪▪ La Clase EjecutaEstudiante, tiene un solo método denominado principal, en


dicho método se realiza las acciones para manipular la clase Estudiante.

▪▪ En el punto a del método principal de la clase EjecutaEstudiante, se


declaran variables locales, que permiten implementar la lógica del algoritmo.

▪▪ En el punto b del método principal de la clase EjecutaEstudiante, se lo


utiliza para declarar e inicializar un objeto. Se usa la siguiente forma:

Estudiante estudiante = new Estudiante()

En la anterior línea de código se tienen algunas consideraciones:

• El nombre de la variable declarada es estudiante (identificador del


objeto).

• El tipo de dato de la variable estudiante es un tipo de dato abstracto


creado, llamado Estudiante (es igual al nombre de clase Estudiante).

• La palabra reservada para llamar a la función que es usada para


inicializar (crear) un objeto es new.

• Luego de la palabra new se usa el nombre de la clase de la cual se


desea crear el objeto, haciendo una llamada al constructor, para el
ejemplo se utiliza la clase Estudiante (), es importante notar y no
olvidar escribir los paréntesis al final del nombre de la clase.

45 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

▪▪ El objeto creado estudiante, posee dos partes importantes:

• La primera se refiere a los datos que lo representan (tomados de la


clase Estudiante):

nombresEstudiante, se inicializa con un valor por defecto de nulo


apellidosEstudiante, se inicializa con un valor por defecto de nulo
identificacionEstudiante, se inicializa con un valor por defecto de nulo
valorCredito: se inicializa con un valor por defecto de cero
numeroCreditos: se inicializa con un valor por defecto de cero
costoMatricula: se inicializa con un valor por defecto de cero

• La segunda parte, se refiere a los métodos que permiten manipular los


datos (variables o atributos) del objeto.

▪▪ En el punto c y d del método principal de la clase EjecutaEstudiante


se solicita el ingreso de información por parte del usuario, los valores
ingresados son asignados a las variables locales creadas en el método
principal.

▪▪ En el punto e del método principal de la clase EjecutaEstudiante se realizan


los procesos necesarios para asignar los valores ingresados en el punto d a
los datos del objeto.

Se usa la siguiente forma para asignar un valor al dato que corresponde a


los nombres de un estudiante:

estudiante.establecerNombresEstudiante(nombresEst)

En la acción se utiliza el objeto estudiante y por cuyo intermedio se


puede acceder a los métodos propios del objeto, para el ejemplo, se usa
el método establecerNombesEstudiante, al mencionado método se le
envía un parámetro tipo Cadena (nombresEst), se recuerda que la variable

46 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

nombresEst fue asignada con anterioridad en el proceso de ingreso de


valores.

Importante, si se tiene declarado un método como sigue:

Método establecerValorCredito(valor: Real)


a. valorCredito = valor
b. Fin Método establecerValorCreditor

Para poder usar el método establecerValorCredito mediante un objeto


creado previamente, se le debe enviar un parámetro (solo uno) de manera
obligatoria, caso contrario se genera un error, debido a que no se está
cumpliendo con la correspondencia. Ejemplos:

Es correcto:

objeto_creador.establecerNombresEstudiante(nombresEst)

Es incorrecto:

objeto_creador.establecerNombresEstudiante() , debido a que no se envía al


menos un parámetro objeto_creador.establecerNombresEstudiante(nomb
resEst, apellidosEst) , debido a que el número de parámetros enviados es
mayor al número de parámetros que espera el método (solo se espera uno)

▪▪ En el punto f del método principal de la clase EjecutaEstudiante se realiza


una llamada a un método del objeto estudiante, mismo que permite realizar
el proceso de cálculo de la matrícula de un estudiante:

estudiante.calcularCostoMatricula()

Para llamar al método calcularCostoMatricula(), no es necesario enviar


como parámetro ningún valor, debido a que el método no espera parámetro
alguno.

47 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

▪▪ Finalmente, en el punto g del método principal de la clase


EjecutaEstudiante se expresa las sentencias que tiene como objetivo
presentar, imprimir o dar salida a valores de los datos del objeto en cuestión;
este paso depende de las necesidades del usuario. Por ejemplo, para la
siguiente línea de miniespecificación:

estudiante.obtenernombresEstudiante(),

se está accediendo al valor de la variable o dato del objeto


nombresEstudiante, haciendo uso de la sentencia return del método.

Estimado estudiante a través de los siguientes enlaces usted puede


descargar los archivos del ejemplo anterior:

Diagrama Solución del ejemplo planteado en diagrama.


Miniespecificación Solución del ejemplo planteado en miniespecificación.
Lenguaje de Solución del ejemplo planteado en un lenguaje de programación.
Programación

2.2. Uso de Constructores

En el capítulo Programación orientada a objetos aplicando la estructura


de secuenciación sección Constructores y destructores del texto básico, se
hace referencia a otro concepto importante en el proceso de entendimiento y
aprendizaje de programación orientada a objetos, se habla de los constructores.

El objetivo de los métodos constructores es reservar espacio y crear un objeto en


memoria. Todas las clases tiene por defecto un constructor, mismo que es llamado
al momento de crear la instancia del objeto.

Importante, si se crea un constructor en una clase, las instancias que se crean para
esa clase, deben acoplarse a las características del método. Además, una clase
puede tener n número de constructores, que deben diferenciarse por el número y
tipo de parámetros que esperan:

48 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Algoritmo Ejemplo constructor


Clase Estudiante

1. Método Estudiante()
a. ...
Fin Método Estudiante

2. Método Estudiante(nom: Cadena)


b. ...
Fin Método Estudiante

3. Método Estudiante(nom: Cadena, ape: Cadena)


c. ...
Fin Método Estudiante

Fin Clase Estudiante


Fin

A continuación, se detalla algunos casos en el uso de constructores:

Caso 1: Inicializar con valores específicos los datos de un objeto:

Algoritmo Ejemplo constructor

Clase Estudiante
1. Declarar
nombresEstudiante: Cadena
apellidosEstudiante: Cadena

2. Método Estudiante()
a. nombresEstudiante = “Luis”
b. apellidosEstudiante = “Alvarez”
c. Fin Método Estudiante

49 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

3. Método establecerNombresEstudiante(nom: Cadena)


a. nombresEstudiante = nom
b. Fin Método establecerNombresEstudiante

4. Método establecerApellidoEstudiante(ape: Cadena)


a. apellidosEstudiante = ape
b. Fin Método establecerApellidoEstudiante

5. Método obtenernombresEstudiante() : Cadena


a. return nombresEstudiante
b. Fin Método obtenernombresEstudiante

6. Método obtenerApellidoEstudiante() : Cadena


a. return apellidosEstudiante
b. Fin Método obtenerApellidoEstudiante

Fin Clase Estudiante

Clase EjecutaEstudiante
1. Método principal()
a. Declarar Variables
nombresEst: Cadena
apellidosEst: Cadena

b. Declarar,crear e iniciar objeto


Estudiante estudiante = new Estudiante()

c. Imprimir estudiante.obtenernombresEstudiante(),
estudiante.obtenerApellidoEstudiante(),

d. Fin Método principal

Fin Clase EjecutaEstudiante


Fin

50 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Explicación del caso:

▪▪ Para la declaración del método constructor de una clase se usa el mismo


nombre de la clase seguido de un paréntesis (). En el ejemplo se tiene:

Declarada la clase Estudiante:

Clase Estudiante

y se define el constructor de la siguiente forma:

Método Estudiante()

▪▪ En el método constructor del caso se realizan asignaciones de valores


específicos a los datos (atributos) del objeto que se va a crear.

a. nombresEstudiante = “Luis”
b. apellidosEstudiante = “Alvarez”

▪▪ En la clase EjecutaEstudiante dentro del método principal en el punto b, se


inicializa un objeto de tipo Estudiante; tomando en consideración que se ha
generado explícitamente un constructor para la clase, todos los objetos que
se crean pasan por la lógica del constructor:

Estudiante estudiante = new Estudiante()

La anterior sentencia llama método constructor de la clase Estudiante e


inicializa los valores de los datos.

▪▪ En la clase EjecutaEstudiante dentro del método principal en el punto c,


se hace referencia a los métodos de la clase Estudiante, para presentar
valores por pantalla:

obtenernombresEstudiante()
obtenerApellidoEstudiante()

51 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

En base a los valores asignados se presentará en pantalla:

Luis Alvarez

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Miniespecificación Desarrollo del caso planteado en miniespecificación.


Lenguaje de Desarrollo del caso planteado en lenguaje de programación.
Programación

Caso 2: Inicializar el objeto mediante un constructor con valores enviados como


parámetros:

Clase Estudiante
1. Declarar
nombresEstudiante: Cadena
apellidosEstudiante: Cadena

2. Método Estudiante(nom: Cadena, ape: Cadena)


a. nombresEstudiante = nom
b. apellidosEstudiante = ape
c. Fin Método Estudiante

3. ...

4. ...

5. ...

6. ...

Fin Clase Estudiante

52 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Clase EjecutaEstudiante
1. Método principal()
a. Declarar Variables
nombresEst: Cadena
apellidosEst: Cadena

b. Asignar valores
nombresEst = “Luis”
apellidosEst = “Alvarez”

c. Declarar, crear e iniciar objeto


Estudiante estudiante = new Estudiante(nombresEst, apellidosEst)

d. Imprimir estudiante.obtenernombresEstudiante(),
estudiante.obtenerApellidoEstudiante(),

e. Fin Método principal

Fin Clase EjecutaEstudiante


Fin

Explicación del caso:

▪▪ En el caso se usa una declaración de constructor que espera parámetros


para inicializar el objeto.

Método Estudiante(nom: Cadena, ape: Cadena)


a. nombresEstudiante = nom
b. apellidosEstudiante = ape

Los parámetros que espera el constructor son: nom y ape, ambos de tipo
Cadena; en la lógica del constructor determina lo siguiente: se asigna el valor que
se recibe en el parámetro nom al dato (atributo) global nombresEstudiante y se
asigna el valor del parámetro ape al dato apellidosEstudiante

53 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

▪▪ En el literal c del método principal de la clase EjecutaEstudiante, se crea el


objeto tipo Estudiante y se llama al constructor de la siguiente manera:

Estudiante estudiante = new Estudiante(nombresEst, apellidosEst)

En este caso se cumple con la condición requerida por el constructor, es decir, sí


se está enviando los parámetros nombresEst y apellidosEst.

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Miniespecificación Desarrollo del caso planteado sobre constructores en


miniespecificación.
Lenguaje de Desarrollo del caso planteado sobre constructores en lenguaje
Programación de programación.

2.3. Uso de estructuras de selección simple y compuesta en POO

Para continuar el estudio del presente apartado, vamos a revisar el contenido


del texto básico en el capítulo Programación orientada a objetos aplicando las
estructuras de selección, secciones: Diseño de algoritmos OO usando la selección
doble (if-then-else) y Diseño de algoritmos OO usando la selección simple (if-
then). Además, usted debe recordar los conceptos estudiados en en el capítulo La
selección, secciones: La selección doble (if-then-else), La selección simple (if-
then) y La selección múltiple (switch).

¡Sigamos Adelante!

En el presente apartado se busca implementar los conceptos de estructuras de


selección simple y doble en la generación de algoritmos orientados a objetos,
las formas de las estructuras mencionadas son las siguientes, se las indica en la
Tabla 4.

54 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Tabla 4. Estructura de selección simple y compuesta.


Estructura de
Forma General
Selección
Condicional if expresión-lógica then
Simple Conjunto de instrucciones a ejecutar para una expresión-lógica
verdadera
endif
Condicional if expresión-lógica then
Doble Conjunto de instrucciones a ejecutar para una expresión-lógica
verdadera
else
Conjunto de instrucciones a ejecutar si la expresión lógica falsa
endif

Para su entendimiento se plantea la siguiente problemática:

Problemática:

Se desea generar una solución informática que permita determinar el valor a


pagar de la pensión mensual de un estudiante de un instituto educativo, en
función de los créditos que está cursando en un ciclo en particular.

Datos de salida:

▪▪ Nombres y apellidos del estudiante y el valor de la pensión

Datos de entrada:

▪▪ Nombres, apellidos, número de créditos y costo de cada crédito

Procesamiento de los datos:

▪▪ El costo de la pensión del estudiante se define así: si el estudiante está


cursando 6 créditos o más recibe un descuento del 10% en el valor del
crédito y el valor resultante se lo relaciona con el número de créditos; para el

55 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

resto de los estudiantes se debe cobrar una pensión en base al número de


créditos y costo de cada crédito fijados inicialmente

Diagrama de clases:

El diagrama de clases para la problemática está representado en la Figura 10,


mediante dos clases: Clase Estudiante y Clase Ejecuta Estudiante.

Figura 10. Diagrama de Clases


Elaborado por: Elizalde, R. (2018).

Miniespecificación o Pseudocódigo

Algoritmo CALCULAR PENSIÓN DE UN ESTUDIANTE


Clase Estudiante
1. Declarar
nombresEstudiante: Cadena
apellidosEstudiante: Cadena
valorCredito: Real
numeroCreditos: Entero
costoPension: Real

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombresEstudiante(nom: Cadena)
a. nombresEstudiante = nom
b. Fin Método establecerNombresEstudiante

56 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

3. Método establecerApellidoEstudiante(ape: Cadena)


a. apellidosEstudiante = ape
b. Fin Método establecerApellidoEstudiante

4. Método establecerValorCredito(valor: Real)


a. valorCredito = valor
b. Fin Método establecerValorCreditor

5. Método establecerNumeroCreditos(numero: Real)


a. numeroCreditos = numero
b. Fin Método establecerNumeroCreditos

6. Método calcularCostoPension()
// el método permite la discriminación en base a lo solicitado
// en la problemática, para calcular el costo de la pensión de un estudiante
a. if numeroCreditos < 6 then
costoPension = numeroCreditos * valorCredito
b. else
nuevoValorCredito: Real
nuevoValorCredito = (valorCredito * 10)/100
nuevoValorCredito = valorCredito – nuevoValorCredito
costoPension = numeroCreditos * nuevoValorCredito
c. endif
d. Fin Método calcularPension

// Métodos obtener para los datos o atributos de la clase


7. Método obtenerNombresEstudiante() : Cadena
a. return nombresEstudiante
b. Fin Método obtenernombresEstudiante

8. Método obtenerApellidoEstudiante() : Cadena


a. return apellidosEstudiante
b. Fin Método obtenerApellidoEstudiante

57 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

9. Método obtenerNumeroCreditos() : Entero


a. return numeroCreditos
b. Fin Método obtenerNumeroCreditos

10. Método obtenerValorCredito(): Real


a. return valorCredito
b. Fin Método obtenerValorCredito

11. Método obtenerCostoPension() : Real


a. return costoMatricula
b. Fin Método costoPension

Fin Clase Estudiante

Clase EjecutaEstudiante
1. Método principal()
a. Declarar Variables
nombresEst: Cadena
apellidosEst: Cadena
valorCred: Real
numeroCred: Entero

b. // Declarar e iniciar el objeto Estudiante


Estudiante estudiante = new Estudiante()

c. Solicitar nombre de estudiante,


apellido de estudiante
número de créditos
valor de cada crédito

d. Leer nombresEst,
apellidosEst,
numeroCredito,
valorCredito

58 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

e. // se utiliza los métodos establecer para asignar valores


// a los datos (atributos) del objeto
Establecer estudiante.establecerNombresEstudiante(nombresEst),
estudiante.establecerApellidoEstudiante(apellidosEst),
estudiante.establecerNumeroCredito(numeroCredito),
estudiante.establecerValorCredito(valorCredito)

f. // Se utiliza el método que permite calcular el costo de


// la pensión, se llama al método llamado calcularCostoPension
Calcular estudiante.calcularCostoPension()

g. Imprimir estudiante.obtenernombresEstudiante(),
estudiante.obtenerApellidoEstudiante(),
estudiante.obtenerCostoPension()

h. Fin Método principal

Fin Clase EjecutaEstudiante


Fin

Explicación:

▪▪ Para la solución de la problemática se requiere la creación de dos clases:


Estudiante y EjecutaEstudiante

▪▪ En la clase Estudiante se tiene:

• Punto 1, la declaración de los datos (atributos) de la clase.

• Puntos 2,3,4,5 se hace referencia a la creación de los métodos que


permiten agregar o colocar un valor a los atributos de la clase.

• Punto 6, hace referencia a la creación del método


calcularCostoPension, en base a la problemática descrita es en este

59 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

método se debe agregar la discriminación del costo de la pensión, en


función del número y valor de los créditos.

Se utiliza la estructura de selección compuesta de la siguiente manera;


se expresa un condicional if (numeroCreditos < 6) then, en la
expresión se utiliza el atributo numeroCreditos, para comparar si el
número de créditos es menor a seis, si la expresión da como resultado
un valor verdadero el programa pasa a ejecutar la línea de código
costoPension = numeroCreditos * valorCredito, que permite cumplir
con el requerimiento del problema (si el número de créditos es menor
seis, se debe obtener el valor de la pensión a través de la multiplicación
del número de créditos por el valor del crédito); en el caso que la
expresión if (numeroCreditos < 6) then, se falsa se pasa a ejecutar la
sentencias que están luego de la palabra reservada else:

nuevoValorCredito: Real
nuevoValorCredito = (valorCredito * 10)/100
costoPension = numeroCreditos * nuevoValorCredito

en dicha sección se crea un variable de ámbito global denominada


nuevoValorCredito, que permitirá almacenar el nuevo valor del crédito
con el 10% de descuento, luego se usa dicha variable para calcular
el costo de la pensión mediante una operación de multiplicación
numeroCreditos * nuevoValorCredito

• Puntos 7,8,9,10,11 se generan métodos que permiten retornar el valor


de cada dato (atributo) de la clase.

▪▪ En la clase EjecutaEstudiante se tiene:

• En el punto b, se declara e inicia el objeto Estudiante.

• En el punto c y d, se solicita y captura los datos que son asignados a


las variables declaradas en el método principal.

60 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

• En el punto e, se usa los métodos establecer para asignar valores al


objeto.

• En el punto f, se utiliza el método que permite calcular el costo de la


pensión mediante la llamada al método calcularCostoPension.

• En el punto g, se imprime en pantalla los datos que se necesita


presentar.

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama


Miniespecificación Desarrollo del caso planteado mediante miniespecificación
Lenguaje de Desarrollo del caso planteado mediante lenguaje de programación
Programación

Estimados estudiantes hemos llegado al fin de nuestra segunda unidad.


Con la finalidad de retroalimentar sus conocimientos vamos a desarrollar
la autoevaluación propuesta a continuación.

61 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Autoevaluación 2

A continuación, se presentan preguntas relacionadas a la estructura y


creación de algoritmos orientados a objetos y el uso de estructuras de
selección en POO. Se solicita revisar la unidad 2 de la presente guía y
los capítulos: Programación orientada a objetos aplicando la estructura de
secuenciación y Programación orientada a objetos aplicando las estructuras de
selección del texto básico para contestar las interrogantes. La autoevaluación
permitirá a usted, reafirmar los conceptos estudiados.

Los siguientes enunciados son de opción múltiple, cada uno de ellos tiene una
sola respuesta correcta. Lea atentamente cada pregunta y seleccione la opción
que usted considere como válida en cada situación.

1. ¿Cuál es la forma o sentencia correcta para empezar a desarrollar una


miniespecificación?

a. Algoritmo NOMBRE_DEL_ALGORITMO
b. NOMBRE_DEL_ALGORITMO
c. NOMBRE_DEL_ALGORITMO Algoritmo

2. ¿Cuál es la función de los métodos “establecer”?

a. Asignar un valor a un dato de un objeto.


b. Recuperar el valor de un dato de un objeto
c. Imprimir el valor de un dato de un objeto.

3. ¿Cuál es la función de los métodos “obtener”?

a. Recuperar el valor de un dato de un objeto.


b. Asignar un valor a un dato de un objeto
c. Imprimir el valor de un dato de un objeto.

62 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

4. Indique la forma correcta para declarar e inicializar un objeto.

a. Clase1 c = Clase1()
b. Clase1 c = new Clase1()
c. c = new Clase1()

5. En base a la siguiente clase

Clase Trabajador
1. Declarar
sueldo: Real
2. Método establecerSueldo(c: Real)
sueldo = c
Fin Método establecerEdad
3. Método obtenerSueldo()
return sueldo
Fin Método obtenerSueldo
Fin Clase Trabajador

Determine cuál de las siguientes sentencias son válidas y no generan error.

Opción A)
Trabajor t = new Trabajador()
t.establecerSueldo(10.2)
Opción B)
Trabajor t = Trabajador()
t.establecerSueldo(10.2)
Opción C)
Trabajor t = new Trabajador()
t.obtenerSueldo(10.2)

a. Opción A
b. Opción B
c. Opción C

63 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

6. En base al concepto de constructores; indique la idea correcta del siguiente


listado de expresiones.

a. Las clases solo pueden tener 2 constructores.


b. Todas las clases tiene un constructor por defecto.
c. Los constructores tienen diferente nombre de la clase.

7. Dadas las siguientes clases.

Clase Vehiculo
1. Declarar
placa: Cadena
2. Método Vehiculo()
placa = “LBBC-0183”
3. Método establecerPlaca(c: Cadena)
placa = c
Fin Método establecerPlaca
4. Método obtenerPlaca()
return placa
Fin Método obtenerPlaca
Fin Clase Vehiculo

Clase Ejecuta
1. Método principal()
a. Vehiculo v = new Vehiculo()
b. Imprimir v.obtenerPlaca()
c. v.establecerPlaca(“PBCC-0192”)
d. Imprimit v.obtenerPlaca()
e. Fin Método principal
Fin Clase Ejecuta

64 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Determinar la salida que se obtendrá en pantalla.

a. LBBC-0183
PBCC-0192
b. PBCC-0192
c. LBBC-0183

8. En base a la siguiente clase

Clase Vehiculo
1. Declarar
placa: Cadena
2. Método Vehiculo()
placa = “LBBC-0183”
3. Método Vehiculo(pl: Cadena)
placa = pl
4. Método obtenerPlaca()
return placa
Fin Método obtenerPlaca
Fin Clase Vehiculo

Determine cuál de las siguientes sentencias generarían un error.

Opción A)
Clase Ejecuta
1. Método principal()
a. Vehiculo v = new Vehiculo()
b. Fin Método principal
Fin Clase Ejecuta

Opción B)
Clase Ejecuta
1. Método principal()
a. Vehiculo v = new Vehiculo(“BDAS-001”)
b. Fin Método principal
Fin Clase Ejecuta

65 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Opción C)
Clase Ejecuta
1. Método principal()
a. Vehiculo v = new Vehiculo(“ADEA-1234”, “TGBA-4321”)
b. Fin Método principal
Fin Clase Ejecuta

a. Opción A
b. Opción B
c. Opción C

9. En base a las siguientes clases; indique la descripción que se ajuste a lo


expresado en la miniespecificación.

Clase Vehiculo
1. Declarar
placa: Cadena

2. Método Vehiculo()
placa = “LBBC-0183”

3. Método Vehiculo(pl: Cadena)


placa = pl

4. Método obtenerPlaca()
return placa
Fin Método obtenerPlaca
Fin Clase Vehiculo

Clase Ejecuta
1. Método principal()
a. Declarar variable
opcion: Entero

66 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

b. Solicitar opcion
Leer opcion
if opcion == 1 then
Vehiculo v = new Vehiculo(“BDAS-001”)
else
Vehiculo v = new Vehiculo()
endif
Fin Método principal
Fin Clase Ejecuta

a. Si el usuario ingresa el valor de 1 en la variable opción, el programa


declara e inicializa la clase Vehículo con el constructor que recibe un
parámetro.
b. Si el usuario ingresa el valor de 1 en la variable opción, el programa
declara e inicializa la clase Vehículo con el constructor por defecto.
c. Si el usuario ingresa el valor de 2 en la variable opción, el programa no
puede declarar e inicializar la clase Vehículo de ninguna forma.

10. ¿Cuál es la forma correcta para declarar un constructor en


miniespecificación?

Opción A)
Clase Edifico
1. Declarar
2. Método Edificio()

Fin Método Edificio


Fin Clase Edificio

Opción B)
Clase Edifico
1. Declarar
2. Método Contructor_Edificio()
3. Fin Método Contructor_Edificio
Fin Clase Edificio

67 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Opción C)
Clase Edifico
1. Declarar
2. Método Contructor()
3. Fin Método Contructor
Fin Clase Edificio

a. Opción A
b. Opción B
c. Opción C

Felicito su empeño y dedicación, ahora es momento de iniciar una


nueva unidad de estudio.

68 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

UNIDAD 3. ESTRUCTURAS DE REPETICIÓN EN PROGRAMACIÓN


ORIENTADA A OBJETOS

3.1. Uso de Estructura de repetición do-while en POO

Sigamos en el desarrollo de nuestra labor académica, para ello


solicito revisar el contenido del texto básico en el capítulo
Programación orientada a objetos aplicando las estructuras de
repetición sección Diseño de algoritmos OO usando la repetición do...while.
Además, usted debe recordar los conceptos estudiados en el capítulo La
repetición, sección La repetición do...while.

Un ciclo repetitivo do-while, permite iterar un conjunto de líneas de código de


acuerdo a una condición que se evalúa al final del ciclo; si la condición que se
evalúa es verdadera se sigue iterando el ciclo repetitivo; si la condición es falsa
o no se cumple se sale del proceso de iteración. Una característica del do-while
es que su código se ejecuta en al menos una oportunidad; a continuación, se
ejemplifica el uso del ciclo, para la creación de objetos o instancias de una clase.

La ejemplificación del ciclo repetitivo do-while, se lo realiza a través de la


siguiente problemática.

Problemática

Se desea generar una solución informática que permita determinar el valor a


pagar de la pensión mensual de un estudiante de un instituto educativo, en
función de los créditos que está cursando en un ciclo en particular. El costo de la
pensión del estudiante se define así: si el estudiante está cursando 6 créditos o
más recibe un descuento del 10% en el valor del crédito y el valor resultante se
lo relaciona con el número de créditos; para el resto de los estudiantes se debe
cobrar una pensión en base al número de créditos y costo de cada crédito fijados
inicialmente. Hacer uso del ciclo repetitivo do-while para permitir el ingreso

69 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

de varios estudiantes, el usuario decidirá el momento en que ya no desee


ingresar más valores al proceso.

Diagrama de clases

El diagrama de clases para la problemática está representado en la Figura 11,


mediante dos clases: Clase Estudiante y Clase EjecutaEstudiante.

Figura 11. Diagrama de Clases


Elaborado por: Elizalde, R. (2018).

Miniespecificación o Pseudocódigo

Importante, en el desarrollo de la solución se han incluido comentarios para la


explicación de los diversos procesos; las líneas que representan comentarios son
todas aquellas que empiezan con el símbolo //

Algoritmo CALCULAR LA PENSIÓN DE VARIOS ESTUDIANTE

Clase Estudiante
1. Declarar
nombresEstudiante: Cadena
apellidosEstudiante: Cadena
valorCredito: Real
numeroCreditos: Entero
costoPension: Real

70 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombresEstudiante(nom: Cadena)
a. nombresEstudiante = nom
b. Fin Método establecerNombresEstudiante

3. Método establecerApellidosEstudiante(ape: Cadena)


a. apellidosEstudiante = ape
b. Fin Método establecerApellidosEstudiante

4. Método establecerValorCredito(valor: Real)


a. valorCredito = valor
b. Fin Método establecerValorCreditor

5. Método establecerNumeroCreditos(numero: Entero)


a. numeroCreditos = numero
b. Fin Método establecerNumeroCreditos

6. Método calcularCostoPension()
// el método permite la discriminación en base a lo solicitado
// en la problemática, para calcular el costo de la pensión de un estudiante
a. if numeroCreditos < 6 then
costoPension = numeroCreditos * valorCredito
b. else
nuevoValorCredito: Real
nuevoValorCredito = (valorCredito * 10)/100
nuevoValorCredito = valorCredito – nuevoValorCredito
costoPension = numeroCreditos * nuevoValorCredito
c. endif
d. Fin Método calcularPension

// Métodos obtener para los datos o atributos de la clase


7. Método obtenerNombresEstudiante() : Cadena
a. return nombresEstudiante
b. Fin Método obtenernombresEstudiante

71 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

8. Método obtenerApellidosEstudiante() : Cadena


a. return apellidosEstudiante
b. Fin Método obtenerApellidosEstudiante

9. Método obtenerNumeroCreditos() : Entero


a. return numeroCreditos
b. Fin Método obtenerNumeroCreditos

10. Método obtenerValorCredito(): Real


a. return valorCredito
b. Fin Método obtenerValorCredito

11. Método obtenerCostoPension() : Real


a. return costoMatricula
b. Fin Método costoPension
Fin Clase Estudiante

Clase EjecutaEstudiante
1. Método principal()
a. Declarar Variables
nombresEst: Cadena
apellidosEst: Cadena
valorCred: Real
numeroCred: Entero
bandera: Carácter

b. // Se inicia el ciclo repetitivo


do

1. // Declarar e iniciar el objeto Estudiante


// para todas las ocasiones que se recorra el ciclo
Estudiante estudiante = new Estudiante()

72 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

2. Solicitar nombre de estudiante,


apellido de estudiante
número de créditos
valor de cada crédito

3. Leer nombresEst,
apellidosEst,
numeroCredito,
valorCredito

4. // se utiliza los métodos establecer para asignar valores


// a los datos (atributos) del objeto
Establecer estudiante.establecerNombresEstudiante(nombresEst),
estudiante.establecerApellidosEstudiante(apellidosEst),
estudiante.establecerNumeroCredito(numeroCredito),
estudiante.establecerValorCredito(valorCredito)

5. // Se utiliza el método que permite calcular el costo de


// la pensión, se llama al método llamado calcularCostoPension
Calcular estudiante.calcularCostoPension()

6. Imprimir “Los datos del estudiante ingresados son:”,


estudiante.obtenernombresEstudiante(),
estudiante.obtenerApellidosEstudiante(),
“Su pensión a pagar es:”,
estudiante.obtenerCostoPension()
7. Imprimir “Desea continuar ingresando estudiante S/N”
8. Leer bandera

c. while bandera==’S’ // si el usuario ingresa el valor ‘S’, se continua


// en el ciclo repetitivo, si el usuario ingresa
// algún otro valor, se sale del ciclo
// repetitivo

73 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

d. Fin Método principal

Fin Clase EjecutaEstudiante


Fin

Revisemos detenidamente la explicación sobre nuestro ejemplo.

Explicación

El ciclo repetitivo do-while de la clase EjecutaEstudiante permite crear un objeto


de tipo Estudiante (para cada objeto se hará uso de los métodos establecer
y obtener, que permiten encontrar el valor de la pensión de cada instancia.)
cada vez que se itera en el mismo. En base a la miniespecificación, se solicita que
el usuario decida si desea ingresar más objetos de tipo Estudiante; si el usuario
por ejemplo en la tercera iteración ingresa un valor diferente de “S” para
la variable bandera, el ciclo repetitivo se termina y el programa crearía tres
objetos de tipo Estudiante.

Diagramas de clases

La representación de las tres posibles instancias en diagrama de clases y objetos


es como sigue en la Figura 12.

74 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Figura 12. Diagrama de Clases e Instancias


Elaborado por: Elizalde, R. (2018).

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de programación.
Programación

3.2. Uso de Estructura de repetición while en POO

Es el momento de revisar el contenido del texto básico en en el capítulo


Programación orientada a objetos aplicando las estructuras de repetición sección
Diseño de algoritmos OO usando la repetición while. Además, usted debe recordar
los conceptos estudiados en el capítulo La repetición, sección La repetición while.

Un ciclo repetitivo while, permite iterar un conjunto de líneas de código de


acuerdo a una condición que se evalúa al inicio del ciclo, hay que tener cuidado
con la construcción de la condición, pues, si la condición es falsa desde el inicio,
nunca se ingresa al ciclo repetitivo; a continuación, se ejemplifica el uso del ciclo,
para la creación de objetos o instancias de una clase.

75 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

La ejemplificación del ciclo repetitivo while, se lo realiza a través de la siguiente


problemática.

Problemática

Se desea generar una solución informática que permita determinar el sueldo a


pagar mensual de un docente de un instituto educativo, en función de las horas
trabajadas en el mes y el costo por hora. Para obtener el valor a pagar se define
lo siguiente: si el docente ha trabajado 40 horas o más, se le debe agregar a su
sueldo una bonificación de $150; para el resto de docente no se debe agregar
ningún valor adicional

Diagrama de clases

El diagrama de clases para la problemática está representado en la Figura 13,


mediante dos clases: Clase Docente y Clase EjecutaDocente.

Figura 13. Diagrama de Clases


Elaborado por: Elizalde, R. (2018).

Miniespecificación o Pseudocódigo

Importante, en el desarrollo de la solución se han incluido comentarios para la


explicación de los diversos procesos; las líneas que representan comentarios son
todas aquellas que empiezan con el símbolo //

76 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Algoritmo CALCULAR LA PENSIÓN DE VARIOS ESTUDIANTE

Clase Docente
1. Declarar
nombres: Cadena
apellidos: Cadena
numeroHoras: Real
costoHora: Real
sueldo: Real

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombres(nom: Cadena)
a. nombres = nom
b. Fin Método establecerNombres

3. Método establecerApellido(ape: Cadena)


a. apellidos= ape
b. Fin Método establecerApellido

4. Método establecerNumeroHoras(horas: Real)


a. numeroHoras = horas
b. Fin Método establecerNumeroHoras

5. Método establecerCostoHora(costo: Real)


a. costoHora = costo
b. Fin Método establecerCostoHora

6. Método calcularSueldo()
a. if numeroHoras >= 40 then
sueldo = (numeroHoras * costoHora) + 150
b. else
sueldo = numeroHoras * costoHora
c. endif
d. Fin Método calcularSueldo

77 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

// Métodos obtener para los datos o atributos de la clase

7. Método obtenerNombres() : Cadena


a. return nombres
b. Fin Método obtenerNombres

8. Método obtenerApellido() : Cadena


a. return apellidos
b. Fin Método obtenerApellido

9. Método obtenerNumeroHoras() : Entero


a. return numeroHoras
b. Fin Método obtenerNumeroHoras

10. Método obtenerCostoHora():Real


a. return costoHora
b. Fin Método obtenerCostoHora

11. Método obtenerSueldo() : Real


a. return sueldo
b. Fin Método obtenerSueldo

Fin Clase Docente

Clase EjecutaDocente
1. Método principal()
a. Declarar Variables
nombresDoc: Cadena
apellidosDoc: Cadena
costoHr: Real
numeroHr: Entero
bandera: Carácter

78 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

b. bandera = “S”
// Se inicia el ciclo repetitivo
// Se ingresa al ciclo repetitivo, siempre que bandera sea igual
// al carácter “S”
while bandera == “S” then

1. // Declarar e iniciar el objeto Docente


// para todas las ocasiones que se recorra el ciclo
Docente docente = new Docente()

2. Solicitar nombre de estudiante,


apellido de estudiante
número de Horas
valor de cada Hora

3. Leer nombresDoc,
apellidosDoc,
costoHr,
numeroHr

4. // se utiliza los métodos establecer para asignar valores


// a los datos (atributos) del objeto
Establecer docente.establecerNombres(nombresDoc),
docente.establecerApellido(apellidosDoc),
docente.establecerCostoHora(costoHr),
docente.establecerNumeroHoras(numeroHr)

5. Calcular estudiante.calcularSueldo()

6. Imprimir “Los datos del docente ingresados son:”,


docente.obtenerNombres(),
docente.obtenerApellido(),
“El sueldo del docentes es:”,
docente.obtenerSueldo()

79 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

7. Imprimir “Desea continuar ingresando docentes S/N”


8. Leer bandera
c. endwhile
d. Fin Método principal

Fin Clase EjecutaDocente

Fin

Explicación

Como podemos notar el ciclo repetitivo permite crear un objeto de tipo Docente
cada vez que se itera en el mismo. En base a la miniespecificación, se solicita que
el usuario decida si desea ingresar más objetos de tipo Estudiante; si el usuario
en la segunda iteración ingresa el valor de “S” para la variable bandera, el
ciclo repetitivo se termina, pues la sentencia:

while bandera == “S” then

sería falsa; el programa va a crear dos objetos de tipo Docente, además, para
cada objeto se hará uso de los métodos establecer y obtener, que permiten
encontrar el valor del sueldo a cancelar.

La representación de las dos posibles instancias en diagrama de clases y objetos


es como sigue en la Figura 15.

80 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Figura 14. Diagrama de clases e instancias


Elaborado por: Elizalde, R. (2018).

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de
Programación programación.

3.3. Uso de Estructura de repetición for en POO

Para el estudio del presente apartado, diríjase a revisar el contenido del texto
básico en el capítulo Programación orientada a objetos aplicando las estructuras
de repetición sección Diseño de algoritmos OO usando la repetición for. Además,
usted debe recordar los conceptos estudiados en el capítulo La repetición, sección
La repetición for.

La idea principal es usar la lógica del ciclo repetitivo for, en problemáticas


que usan programación orientada a objetos para construir soluciones. La

81 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

ejemplificación del ciclo repetitivo for, se lo realiza a través de la siguiente


problemática.

Problemática

Se necesita presentar una solución que permita encontrar el promedio de


calificaciones de cada alumno de un paralelo. Cada alumno tiene como atributos
nombre, calificación 1, calificación 2, calificación 3. La solución deberá permitir el
ingreso máximo de alumnos para procesar.

Diagrama de clases

El diagrama de clases para la problemática está representado en la Figura ,


mediante dos clases: Clase Alumno y Clase EjecutaAlumno.

Figura 15. Diagrama de Clases


Elaborado por: Elizalde, R. (2018).

Miniespecificación o Pseudocódigo

Importante, en el desarrollo de la solución se han incluido comentarios para la


explicación de los diversos procesos; las líneas que representan comentarios son
todas aquellas que empiezan con el símbolo //

82 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Algoritmo CALCULAR EL PROMEDIO DE CALIFICACIONES DE UN


CONJUNTO DE ALUMNOS

Clase Alumno
1. Declarar
nombres: Cadena
calificacion1: Real
calificacion2: Real
calificacion3: Real
promedio: Real

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombres(nom: Cadena)
a. nombres = nom
b. Fin Método establecerNombres

3. Método establecerCalificacion1(c1: Real)


a. calificacion1 = c1
b. Fin Método establecerCalificacion1

4. Método establecerCalificacion2(c2: Real)


a. calificacion2 = c2
b. Fin Método establecerCalificacion2

5. Método establecerCalificacion3(c2: Real)


a. calificacion3 = c3
b. Fin Método establecerCalificacion3

6. Método establecerNumeroHoras(horas: Real)


a. numeroHoras = horas
b. Fin Método establecerNumeroHoras

83 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

7. Método calcularPromedio()
a. Declarar variable locales
suma = Real
b. Proceso de suma de las calificaciones
suma = calificacion1 + calificacion2 +
calificacion3
c. Proceso para encontrar el promedio
promedio = suma/3
d. Fin Método calcularPromedio

// Métodos obtener para los datos o atributos de la clase


8. Método obtenerNombres() : Cadena
a. return nombres
b. Fin Método obtenerNombres

9. Método obtenerCalificacion1() : Real


a. return calificacion1
b. Fin Método obtenerCalificacion1

10. Método obtenerCalificacion2() : Real


a. return calificacion2
b. Fin Método obtenerCalificacion2

11. Método obtenerCalificacion3() : Real


a. return calificacion3
b. Fin Método obtenerCalificacion3

12. Método obtenerPromedio() : Real


a. return promedio
b. Fin Método obtenerPromedio

Fin Clase Alumno

84 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Clase EjecutaAlumno
1. Método principal()
a. Declarar Variables
nombresEst: Cadena
calf1: Real
calf2: Real
calf3: Real
numero_alumnos: Entero

b. Solicitar numero_estudiante
c. Leer numero_alumnos
d. // inicio del ciclo repetitivo
// que itera hasta el valor ingresado en
// numero_alumnos
for j=1; j<numero_alumnos; j++

1. // Declarar e iniciar el objeto Alumno


// para todas las ocasiones que se recorra el ciclo
Alumno alu = new Alumno()

2. Solicitar nombres de estudiante,


calificación 1,
calificación 2,
calificación 3

3. Leer nombresEst,
calf1,
calf2,
calf3

4. // se utiliza los métodos establecer para asignar valores


// a los datos (atributos) del objeto
Establecer alumno.establecerNombres(nombresEst),

85 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

alumno.establecerCalificacion1(calf1),
alumno.establecerCalificacion2(calf2),
alumno.establecerCalificacion3(calf3)

5. // Se utiliza el método que permite calcular el promedio de


// calificaciones de un alumno, se llama al método llamado
calcularPromedio

6. Calcular alumno.calcularPromedio()

7. Imprimir “Los datos del alumno ingresados son:”,


alumno.obtenerNombres(),
alumno.obtenerCalificacion1(),
alumno.obtenerCalificacion2(),
alumno.obtenerCalificacion3(),
“Su promedio de calificacione es:”,
alumno.obtenerPromedio()

e. endfor
f. Fin Método principal

Fin Clase EjecutaEstudiante


Fin

Explicación

En el ejemplo anterior el ciclo repetitivo permite crear un objeto de tipo Alumno


cada vez que se itera en el mismo. En base a la miniespecificación, se solicita que
el usuario ingrese el número máximo de alumnos que desea generar (el número
máximo de objetos que se van a crear); si el usuario ingresa el número cuatro
para la variable numero_alumnos, el programa va a crear cuatro objetos de
tipo Alumno, además, para cada objeto se hará uso de los métodos establecer
y obtener, que permiten encontrar el promedio de calificaciones de cada
instancia.

86 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

La representación de las cuatro posibles instancias en diagrama de clases y


objetos es como sigue en la Figura 16.

Figura 16. Diagrama de clases e instancias


Elaborado por: Elizalde, R. (2018).

Estimado estudiante a través de los siguientes enlaces usted puede


descargar los archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de programación.
Programación

Al finalizar la presente unidad nos corresponde retroalimentar


sus conocimientos mediante las siguientes preguntas
propuestas.

87 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Autoevaluación 3

A continuación, se presentan preguntas relacionadas a manejo


estructuras de repetición en programación orientada a objetos. Se
solicita revisar la unidad 3 de la presente guía y capítulo Programación
orientada a objetos aplicando las estructuras de repetición del texto básico para
contestar las interrogantes. La autoevaluación permitirá a usted, reafirmar los
conceptos estudiados.

Los siguientes enunciados son de opción múltiple, cada uno de ellos tiene una
sola respuesta correcta. Lea atentamente cada pregunta y seleccione la opción
que usted considere como válida en cada situación.

1. Dada una clase

Clase Docente
1. Declarar
edad: Entero

2. Método establecerEdad(c: Entero)


edad = c
Fin Método establecerEdad

3. Método obtenerEdad()
return edad
Fin Método obtenerEdad
Fin Clase Docente

Se necesita implementar una clase llamada Ejecutar, que permita instanciar


5 objetos de tipo Docente, a cada objeto se le debe asignar un valor para su
atributo o dato edad, haciendo uso del método establecerEdad.

88 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Identifique la miniespecificación correcta:

Opción A)

Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Entero
contador: Entero
contador = 1
b. while contador < 5 then
Docente d = new Docente()
Solicitar edad
Leer e
d.establecerEdad(e)
contador = contador + 1
endwhile
Fin Método principal
Fin Clase Ejecutar
Fin

Opción B)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Entero
contador: Entero
contador = 1
b. while contador < 5 then
Docente d = new Docente()
Solicitar edad
Leer e
d.establecerEdad(e)
endwhile
Fin Método principal
Fin Clase Ejecutar
Fin

89 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Opción C)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Entero
contador: Entero
contador = 1
b. while contador <= 5 then
Docente d = new Docente()
Solicitar edad
Leer e
d.establecerEdad(e)
contador = contador + 1
endwhile
Fin Método principal
Fin Clase Ejecutar
Fin

a. Opción A
b. Opción B
c. Opción C

2. Dadas las siguientes clases.

Clase Docente
1. Declarar
edad: Entero

2. Método establecerEdad(c: Entero)


edad = c
Fin Método establecerEdad

3. Método obtenerEdad()
return edad
Fin Método obtenerEdad
Fin Clase Docente

90 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Entero
contador: Entero
contador = 1
b. do
Docente d = new Docente()
Solicitar edad
Leer e
d.establecerEdad(e)
contador = contador + 1
while contador < 1
Fin Método principal
Fin Clase Ejecutar
Fin

Indique la descripción que se ajuste a lo expresado en la miniespecificación.

a. El programa permite crear dos objetos de tipo Docente


b. El programa permite crear un objeto de tipo Docente
c. El programa no permite crear ningún objeto de tipo Docente

3. Dada la siguiente clase.

Clase Trabajador
1. Declarar
sueldo: Real
2. Método establecerSueldo(c: Real)
sueldo = c
Fin Método establecerEdad
3. Método obtenerSueldo()
return sueldo
Fin Método obtenerSueldo
Fin Clase Trabajador

91 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Se requiere identificar la miniespecificación correcta, que permita crear mediante


un ciclo repetitivo uno o varios objetos de tipo Trabajador.

Opción A)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Real
b. for i=5; i<5;i++
Trabajdor d = new Trabajador()
Solicitar sueldo
Leer e
d.establecerSueldo(e)
contador = contador + 1
endfor
Fin Método principal
Fin Clase Ejecutar
Fin

Opción B)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Real
contador: Entero
contador = 5
b. while contador <5
Trabajdor d = new Trabajador()
Solicitar sueldo
Leer e
d.establecerSueldo(e)
contador = contador + 1
endwhile
Fin Método principal
Fin Clase Ejecutar
Fin

92 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Opción C)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Real
contador: Entero
contador = 1
b. do
Trabajdor d = new Trabajador()
Solicitar sueldo
Leer e
d.establecerSueldo(e)
contador = contador + 1
while contador < 5
Fin Método principal
Fin Clase Ejecutar
Fin

a. Opción A
b. Opción B
c. Opción C

4. Dada la siguiente clase.

Clase Trabajador
1. Declarar
sueldo: Real

2. Método establecerSueldo(c: Real)


sueldo = c
Fin Método establecerEdad

3. Método obtenerSueldo()
return sueldo
Fin Método obtenerSueldo
Fin Clase Trabajador

93 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Se requiere identificar la miniespecificación correcta, que permita crear mediante


un ciclo repetitivo uno o varios objetos de tipo Trabajador y permita asignar
valores al atributo sueldo.

Opción A)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Real
b. for i=0; i<5;i++
Trabajdor d = new Trabajador()
Solicitar sueldo
Leer e
d.obtenerSueldo(e)
endfor
Fin Método principal
Fin Clase Ejecutar
Fin

Opción B)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Real
b. for i=0; i<5;i++
Trabajdor d = new Trabajador()
Solicitar sueldo
Leer e
d.establecerSueldo(e)
endfor
Fin Método principal
Fin Clase Ejecutar
Fin

94 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

Opción C)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Real
b. for i=0; i<5;i++
Trabajdor d = new Trabajador()
endfor
Fin Método principal
Fin Clase Ejecutar
Fin

a. Opción A
b. Opción B
c. Opción C

5. Dadas las siguientes clases.

Clase Trabajador
1. Declarar
sueldo: Real

2. Método establecerSueldo(c: Real)


sueldo = c
Fin Método establecerEdad

3. Método obtenerSueldo()
return sueldo
Fin Método obtenerSueldo
Fin Clase Trabajador

Clase Ejecutar
1. Método principal()
a. Declarar Variables
e: Real

95 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

opcion: Entero
contador: Entero
b. Solicitar opcion
Leer opcion
contador = 1
if opcion == 1 then
while contador <=3
Trabajdor d = new Trabajador()
Solicitar sueldo
Leer e
d.obtenerSueldo(e)
contador = contador + 1
endwhile
else
while contador <3
Trabajdor d = new Trabajador()
Solicitar sueldo
Leer e
d.obtenerSueldo(e)
contador = contador + 1
endwhile

endif
Fin Método principal
Fin Clase Ejecutar
Fin

Indique la descripción que se ajuste a lo expresado en la miniespecificación.

a. Si el usuario ingresa la opción 1, a través de un ciclo repetitivo creará


tres objetos de tipo Trabajador, caso contrario ingresar a través de un
ciclo repetitivo cuatro objetos tipo Trabajador.

b. Si el usuario ingresa la opción 1, a través de un ciclo repetitivo creará


dos objetos de tipo Trabajador, caso contrario ingresar a través de un
ciclo repetitivo tres objetos tipo Trabajador.

96 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Primer bimestre

c. Si el usuario ingresa la opción 1, a través de un ciclo repetitivo creará


tres objetos de tipo Trabajador, caso contrario ingresar a través de un
ciclo repetitivo dos objetos tipo Trabajador.

Muy bien, hemos avanzado con gran parte de nuestro estudio,


ahora es tiempo de preparar la evaluación presencial del primer
bimestre.

Ahora es el momento de iniciar nuevas e interesantes unidades


de estudio en el segundo bimestre.

97 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos

SEGUNDO BIMESTRE

UNIDAD 4. ESTRUCTURAS DE DATOS EN PROGRAMACIÓN ORIENTADA A


OBJETOS

A continuación, analizaremos aspectos muy interesantes de la


programación orientada a objetos, para ello se requiere revisar el
contenido del texto básico en el capítulo Programación orientada a
objetos aplicando arreglos,secciones: Diseño de algoritmos OO usando arreglos
unidemensionales y Diseño de algoritmos OO usando arreglos bidimensionales.

4.1. Uso de Arreglos de Tipos de Datos Simples o Primitivos

Hasta ahora se ha usado atributos de tipos primitivos para las clases como:

▪▪ Enteros
▪▪ Cadenas
▪▪ Reales
▪▪ Booleanos.

En el análisis de las problemáticas que se presentan en el desarrollo de sistemas,


se puede encontrar la necesidad de crear atributos que puedan representar una
colección de datos como:

▪▪ Un listado de tipos enteros, para representar por ejemplo las edades de un


conjunto de estudiantes.
▪▪ Un listado de tipos cadena, para representar un conjunto de nombres o
apellidos de personas.
▪▪ Un listado de tipos reales, que permita representar la estatura de un conjunto
de estudiantes.

98 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Importante, estimados estudiantes, invitamos a recordar los conceptos referentes


a manejo de arreglos en la unidad 6 del texto básico.

▪▪ La representación de una clase en diagrama o miniespecificación usando


atributos o datos de tipo arreglo, es similar a la forma como se ha trabajado
en los capítulos anteriores; pero se respeta los procedimientos de
declaración e instancia de arreglos para los tipos primitivos.

Ejemplo:

Se tiene una entidad denominada Paralelo que tiene como datos a atributos:
nombre, lista de nombres de estudiante, lista de edades de estudiantes.

• El diagrama de clases acorde a las especificaciones se muestra en la


Figura 17, donde se representa una clase llamada Paralelo con sus
datos y métodos correspondientes:

Figura 17. Diagrama de Clases con Datos tipo Arreglos


Elaborado por: Elizalde, R. (2018).

• La miniespecificación para entidad Paralelo es:

Clase Paralelo
1. Declarar
// se declaran datos o atributos con visibilidad protegido
nombre: Cadena
listaNombres: <<Arreglo>>[20] Cadena
listaEdades: <<Arreglo>>[20] Entero
promedio: Real

99 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombre(nom: Cadena)
a. nombre= nom
b. Fin Método establecerNombre

3. Método establecerListaNombres(arregloNombres []:


<<Arreglo>> Cadena)
a. listaNombres = arregloNombres
b. Fin Método establecerListaNombres

4. Método establecerListaEdades(arregloEdades []: <<Arreglo>>


Entero)
a. listaEdades = arregloEdades
b. Fin Método establecerListaEdades

// Métodos obtener para los datos o atributos de la clase


5. Método obtenerNombreParalelo() : Cadena
a. return nombreParalelo
b. Fin Método obtenernombreParalelo

6. Método obtenerListaNombres() : <<Arreglo>> [] Cadena


a. return listaNombres
b. Fin Método obtenerListaNombres

7. Método obtenerListaEdades() : <<Arreglo>> [] Entero


a. return listaEdades
b. Fin Método obtenerListaEdades

Fin Clase Paralelo

En la Tabla 5, se realiza una explicación sobre el manejo de atributos de tipo


arreglo, haciendo referencia a los procesos de creación y uso a través de los
métodos establecer y obtener.

100 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Tabla 5 Manejo de Arreglos en Miniespecificación Orientadas a Objetos

Explicación

Para la declaración de atributos o datos de tipo arreglo. Se usa:


listaNombres: <<Arreglo>>[20] Cadena
listaEdades: <<Arreglo>>[20] Real

• La palabra reservada Arreglo


• El tamaño del arreglo entre []
• El tipo de dato a usar para el arreglo
Declaración de los métodos establecer para las variables de tipo arreglo

Método establecerListaNombres(arregloNombres []: <<Arreglo>> Cadena)


a. listaNombres = arregloNombres
b. Fin Método establecerListaNombres

▪▪ El método establecerListaNombres, recibe un parámetro llamado arregloNombres


de tipo Arreglo de cadenas:
arregloNombres []: <<Arreglo>> Cadena
Declaración de los métodos obtener para las variables de tipo arreglo

Método obtenerListaNombres() : <<Arreglo>> [] Cadena


a. return listaNombres
b. Fin Método obtenerListaNombres

▪▪ El método obtenerListaNombres, devuelve un tipo de dato Arreglo de cadenas:


<<Arreglo>> [] Cadena

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de programación.
Programación

101 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

4.2. Uso de Arreglos de Tipos de Datos de Objetos

Es posible que se necesite declarar atributos o datos de una clase que hagan
referencia a otras clases previamente creadas; a este proceso se lo denomina
agregación entre clases.

Ejemplificando, se puede pensar en una entidad que se denomina Equipo que


tiene atributos o datos como: nombre del equipo, siglas del equipo y un listado
de futbolistas que pertenecen al equipo; el listado de futbolistas se lo puede
representar con un conjunto de objetos de tipo Futbolista (no se hace referencia
a los tipos de datos primitivos), dicha clase puede contener atributos como:
nombres, edad, posición.

▪▪ La representación en un diagrama de clases de una relación de agregación


entre clases se la realiza usando el siguiente símbolo, Figura 18:

Figura 18. Conector Agregación


Elaborado por: Elizalde, R. (2018).

En base al ejemplo de las entidades Equipo y Futbolista descrito con anterioridad


se genera el siguiente diagrama de clase, representado en la Figura 19, donde se
aplica representación de agregación entre las clases Futbolista y Equipo (La clase
Futbolista forma parte de la clase Equipo):

102 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Figura 19. Diagrama de Clases con Agregación


Elaborado por: Elizalde, R. (2018).

▪▪ La miniespecificación para la problemática mencionada es: Clase Futbolista

Clase Futbolista
1. Declarar
// se declaran datos o atributos
nombre: Cadena
edad: Entero
posicion: Cadena

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombre(nom: Cadena)
a. nombre= nom
b. Fin Método establecerNombre

3. Método establecerEdad(ed: Entero)


a. edad = ed
b. Fin Método establecerEdad

103 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

4. Método establecerPosicion(pos: Cadena)


a. posicion = pos
b. Fin Método establecerPosicion

// Métodos obtener para los datos o atributos de la clase


5. Método obtenerNombre() : Cadena
a. return nombre
b. Fin Método obtenerNombre

6. Método obtenerEdad() : Entero


a. return edad
b. Fin Método obtenerEdad

7. Método obtenerPosicion() : Cadena


a. return posicion
b. Fin Método obtenerPosicion

Fin Clase Futbolista

Clase Equipo
1. Declarar
// se declaran datos o atributos
nombreEquipo: Cadena
siglasEquipo: Cadena
listaFutbolistas: <<Arreglo>>[20] Futbolista

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombreEquipo(nom: Cadena)
a. nombre = nom
b. Fin Método establecerNombreEquipo

3. Método establecerSiglasEquipo(siglas: Cadena)


a. siglasEquipo = siglas
b. Fin Método establecerSiglasEquipo

104 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

4. Método establecerListaFutbolista(lista_fut[]: <<Arreglo>>


Futbolista)
a. listaFutbolistas = lista_fut
b. Fin Método establecerListaFutbolista

// Métodos obtener para los datos o atributos de la clase


5. Método obtenerNombreEquipo() : Cadena
a. return nombreEquipo
b. Fin Método obtenerNombreEquipo

6. Método obtenerSiglasEquipo() : Cadena


a. return siglasEquipo
b. Fin Método obtenerSiglasEquipo

7. Método obtenerListaFutbolistas() : <<Arreglo>> [] Futbolista


a. return listaFutbolistas
b. Fin Método obtenerListaFutbolistas

Fin Clase Paralelo

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de programación.
Programación

4.3. Ejercicios propuestos usando arreglos

Distinguidos estudiantes a partir de ahora revisaremos más detenidamente


ejemplos de arreglos con tipos de datos simples o primitivos, y datos de objetos.

105 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

4.3.1. Arreglos con Tipos de Datos Simples o Primitivos

Problemática

Se requiere generar una solución a nivel de diagrama de clases y


miniespecificación que permita obtener el promedio de notas de un paralelo.
Considerar que la entidad Paralelo, posee los siguientes atributos: nombre,
materia, lista de notas y promedio.

Diagrama de Clases

Se genera el diagrama de clases para la clase o entidad Paralelo, representado


en la Figura 20.

Figura 20. Diagrama de Clases


Elaborado por: Elizalde, R. (2018).

Miniespecificación o Pseudocódigo

Importante, en el desarrollo de la solución se han incluido comentarios para la


explicación de los diversos procesos; las líneas que representan comentarios son
todas aquellas que empiezan con el símbolo //

106 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Algoritmo PROMEDIO DE NOTAS DE UN PARALELO

Clase Paralelo
1. Declarar
// se declaran datos o atributos
nombreParalelo: Cadena
materia: Cadena
notas: <<Arreglo>>[20] Real
promedio: Real

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombreParalelo(nom: Cadena)
a. nombreParalelo = nom
b. Fin Método establecerNombreParalelo

3. Método establecerMateria(mat: Cadena)


a. materia = mat
b. Fin Método establecerMateria

4. Método establecerNotas(arreglo_notas []: <<Arreglo>> Real)


a. notas = arreglo_notas
b. Fin Método establecerNotas

5. Método calcularPromedio()
a. // Declarar variables locales necesarias
j: Entero
suma: Real
suma = 0 // se inicializa la variable suma con un valor de 0

b. //inicio del ciclo repetitivo que permita recorrer el arreglo de


// notas, para obtener como resultado la suma total de notas
for j=0; j<20; j++
suma = suma + nota[j]

107 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

c. endfor
d. // para obtener el promedio se realiza la división entre la suma
// de valores obtenido en ciclo repetitivo anterior y el tamaño
// del arreglo
promedio = suma/20 // Importante, 20 es el tamaño del arreglo

e. Fin Método calcularPromedio

// Métodos obtener para los datos o atributos de la clase


6. Método obtenerNombreParalelo() : Cadena
a. return nombreParalelo
b. Fin Método obtenernombreParalelo

7. Método obtenerMateria() : Cadena


a. return materia
b. Fin Método obtenerMateria

8. Método obtenerNotas() : <<Arreglo>> [] Real


a. return notas
b. Fin Método obtenerPromedio

9. Método obtenerPromedio() : Real


a. return promedio
b. Fin Método obtenerPromedio

Fin Clase Paralelo


Clase EjecutaParalelo
1. Método principal()
// Se declaran variables
a. Declarar Variables
nombrePar: Cadena
nombreMat: Cadena
lista_notas: <<Arreglo>>[20] Real
i: Entero

108 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

b. // Solicitar el ingreso de valores para nombre de paralelo


// y nombre de materia
Solicitar nombrePar, nombreMat
Leer nombrePar, nombreMat

c. // Inicio ciclo repetitivo para llenar las notas


// ingresadas por el teclado
// Se usa un ciclo repetitivo for
for i = 0; i<20; i++
// Solicitar el ingreso del valor de la nota y asignar
// a la posición del arreglo indicada por el valor
// que tenga i
1. Solicitar lista_notas[i]
2. Leer lista_notas[i]
d. endfor

e. // Declarar e iniciar un objeto tipo Paralelo


Paralelo paralelo = new Paralelo()

f. // se utiliza los métodos establecer para asignar valores


// a los datos (atributos) del objeto paralelo
Establecer:
paralelo.establecerNombreParalelo(nombrePar),
paralelo.establecerMateria(nombrePar),
paralelo.establecerNotas(lista_notas),

g. // Se utiliza el método que permite calcular el promedio de notas


// Se llama al método del objeto paralelo, llamado calcularPromedio
Calcular: paralelo.calcularPromedio()

109 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

h. Imprimir “Los datos del paralelo son:”,


“Nombre Paralelo: “, paralelo.obtenerNombreParalelo(),
“Materia: “, paralelo.obtenerMateria(),
“Promedio de Notas es “, paralelo.obtenerPromedio(),
Fin Método principal
Fin Clase EjecutaParalelo
Fin

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de programación.
Programación

4.3.2. Arreglos con Tipos de Datos de Objetos

Problemática

Se requiere generar una solución a nivel de diagrama de clases y


miniespecificación que permita obtener el promedio de edades de los estudiantes
de un paralelo. Considerar que la entidad Paralelo, posee los siguientes
atributos: nombre del paralelo, listado de estudiante y promedio de edades de los
estudiantes; se debe tomar en cuenta el atributo listado de estudiante representa
una relación de agregación con una nueva clase llamada Estudiante, que
contiene datos o atributos nombre y edad.

El atributo listado de estudiantes de la clase Paralelo, se lo debe tratar como un


arreglo que contiene objetos tipo Estudiante.

Diagrama de Clases

El diagrama de clases para la problemática se lo representa en al Figura 21.

110 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Figura 21. Diagrama de Clases mediante el uso de Agregación.


Elaborado por: Elizalde, R. (2018).

Miniespecificación o Pseudocódigo

Importante, en el desarrollo de la solución se han incluido comentarios para la


explicación de los diversos procesos; las líneas que representan comentarios son
todas aquellas que empiezan con el símbolo //

Algoritmo PROMEDIO DE EDADES DE LOS ESTUDIANTES DE UN PARALELO

Clase Estudiante
1. Declarar
nombresEstudiante: Cadena
edad: Entero

2. Método establecerNombresEstudiante(nom: Cadena)


a. nombresEstudiante = nom
b. Fin Método establecerNombresEstudiante

111 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

3. Método establecerEdadEstudiante(ed: Entero)


a. edad = ed
b. Fin Método establecerEdadEstudiante

4. Método obtenernombresEstudiante() : Cadena


a. return nombresEstudiante
b. Fin Método obtenernombresEstudiante

5. Método obtenerEdadEstudiante() : Entero


a. return edad
b. Fin Método obtenerEdadEstudiante

Fin Clase Estudiante

Clase Paralelo
1. Declarar
// se declaran datos o atributos con visibilidad protegido
nombreParalelo: Cadena
estudiantes: <<Arreglo>>[10] Estudiante
promedio_edades: Real

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombreParalelo(nom: Cadena)
a. nombreParalelo = nom
b. Fin Método establecerNombreParalelo

3. Método establecerEstudiantes(arreglo_estudiante []: <<Arreglo>> Real)


a. estudiantes = arreglo_estudiante
b. Fin Método establecerEstudiantes

112 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

4. Método calcularPromedioEdades()
a. // Declarar variables locales necesarias
j: Entero
suma: Real
suma = 0 // se inicializa la variable suma con un valor de 0

b. //inicio del ciclo repetitivo que permita recorrer el arreglo de


// notas, para obtener como resultado la suma total de notas
for j=0; j<20; j++
// Se declara una variable llamada e, de tipo Estudiante.
// A la variable e se le asigna el valor del arreglo en la
// posición i.
// Importante señalar que estudiantes[i] representa un
// objeto de tipo Estudiante
Estudiante e = estudiantes[i]

// Se necesita acceder a la edad del estudiante,


// a través del objeto e se accede a la edad del estudiante
// mediante el método obtenerEdadEstudiante y ese valor es
// sumado a la variable suma

suma = suma + e.obtenerEdadEstudiante()


c. endfor
d. // para obtener el promedio se realiza la división entre la suma
// de valores obtenido en ciclo repetitivo anterior y el tamaño
// del arreglo
promedio_edades = suma/10 // Importante, 20 es el tamaño del
arreglo

e. Fin Método calcularPromedio

113 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

// Métodos obtener para los datos o atributos de la clase


5. Método obtenerNombreParalelo() : Cadena
a. return nombreParalelo
b. Fin Método obtenernombreParalelo

6. Método obtenerEstudiantes() : <<Arreglo>> [] Estudiante


a. return estudiantes
b. Fin Método obtenerEstudiantes

7. Método obtenerPromedioEdades() : Real


a. return promedio_edades
b. Fin Método obtenerPromedio

Fin Clase Paralelo

Clase EjecutaParalelo
1. Método principal()
// Se declaran variables
a. Declarar Variables
nombrePar: Cadena
nombreEst: Cadena
edad: Entero
lista_estudiantes: <<Arreglo>>[10] Estudiante
i: Entero

b. // Solicitar el ingreso de valores para nombre de paralelo


Solicitar nombrePar
Leer nombrePar

c. // Inicio ciclo repetitivo para agregar objetos de tipo Estudiante


// al arreglo lista_estudiantes
// Se usa un ciclo repetitivo for
for i = 0; i<10; i++

114 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

1. // Declarar e iniciar un objeto tipo Estudiante


Estudiante e = new Estudiante()

2. // Solicitar el ingreso del nombre y la edad para luego


// usarlos en la asignación de valores del objeto estudiante
// que tenga i
Solicitar nombreEst, edad

3. Leer nombreEst, edad

4. // se utiliza los métodos establecer para asignar valores


// a los datos (atributos) del objeto paralelo
Establecer:
e.establecerNombresEstudiante(nombreEst)
e.establecerEdadEstudiante(edad)

5. // Agregar el objeto estudiante al arreglo lista_estudiantes,


// en la posición que determina el valor de la variable i
lista_estudiantes[i] = e

d. endfor

e. // Declarar e iniciar un objeto tipo Paralelo


Paralelo paralelo = new Paralelo()

f. // se utiliza los métodos establecer para asignar valores


// a los datos (atributos) del objeto paralelo
Establecer:
paralelo.establecerNombreParalelo(nombrePar),
paralelo.establecerEstudiantes(lista_estudiantes),

115 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

g. // Se utiliza el método que permite calcular el promedio de las


// edades de los estudiantes del listado de estudiante.
// Se llama al método del objeto paralelo, llamado
// calcularPromedioEdades
Calcular: paralelo.calcularPromedioEdades()

h. Imprimir “Los datos del paralelo son:”,


“Nombre Paralelo: “, paralelo.obtenerNombreParalelo(),
“Promedio de Edades de estudiante es “,
paralelo.obtenerPromedioEdades()
Fin Método principal
Fin Clase EjecutaParalelo
Fin

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de programación.
Programación

Apreciados estudiantes, es momento de retroalimentar lo aprendido.


Afiancemos conocimientos y logremos fortalecer aquellos aspectos
que demandan un poco más de nuestra atención.

116 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Autoevaluación 4

A continuación, se presentan preguntas relacionadas al manejo de


arreglos en programación orientada a objetos. Se solicita revisar la
unidad 4 de la presente guía y el capítulo Programación orientada a
objetos aplicando arreglos del texto básico para contestar las interrogantes. La
autoevaluación permitirá a usted, reafirmar los conceptos estudiados.

Los siguientes enunciados son de opción múltiple, cada uno de ellos tiene una
sola respuesta correcta. Lea atentamente cada pregunta y seleccione la opción
que usted considere como válida en cada situación.

1. ¿Cuál es el diagrama de clases correcto para una clase que tenga entre sus
datos o atributos un arreglo que permita almacenar los meses del año?

a. Opción A
b. Opción B
c. Opción C

117 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

2. ¿Cuál es la miniespecificación correcta para una clase que tenga entre sus
datos o atributos un arreglo que permita almacenar los meses del año?

Opción A)
Clase Clase
1. Declarar
// se declaran datos o atributos
descripción: Cadena
meses: <<Arreglo>>[12]
Fin Clase Paralelo

Opción B)
Clase Clase
1. Declarar
// se declaran datos o atributos
descripción: Cadena
mes1: Cadena
mes2: Cadena
...
mes12: Cadena
Fin Clase Paralelo

Opción C)
Clase Clase
1. Declarar
// se declaran datos o atributos
descripción: Cadena
meses: <<Arreglo>>[12] Cadena
Fin Clase Paralelo

a. Opción A
b. Opción B
c. Opción C

118 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

3. En una clase se tiene un atributo de tipo arreglo de enteros, denominado


promedios. Identifique cuál es la miniespecificación correcta, que permita
generar los métodos establecer y obtener para el atributo mencionado en
dicha clase.

Opción A)
Clase Clase
1. Declarar
// se declaran datos o atributos
promedios: <<Arreglo>>[12] Entero

2. Método establecerPromedios(lista[]: <<Arreglo>> Entero)


promedios = lista
Fin establecerPromedios

3. Método obtenerPromedios()
return promedios
Fin obtenerPromedios
Fin Clase Clase

Opción B)
Clase Clase
1. Declarar
// se declaran datos o atributos
promedios: <<Arreglo>>[12] Entero

2. Método establecerPromedios(lista[]: <<Arreglo>> Entero)


promedios = lista[0]
Fin establecerPromedios

3. Método obtenerPromedios()
return promedios[0]
Fin obtenerPromedios

Fin Clase Clase

119 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Opción C)
Clase Clase
1. Declarar
// se declaran datos o atributos
promedios: <<Arreglo>>[12] Entero
2. Método establecerPromedios(lista[]: <<Arreglo>> Cadena)
promedios = lista
Fin establecerPromedios
3. Método obtenerPromedios()
return lista
Fin obtenerPromedios
Fin Clase Clase

a. Opción A
b. Opción B
c. Opción C

4. Se desea encontrar la suma de los datos ingresados para el atributo


valores. Se ha generado la siguiente miniespecificación, en la misma falta
implementar el método calcularSuma.

Se solicita identificar la implementación correcta del método calcularSuma.

Clase Clase1
1. Declarar
// se declaran datos o atributos
valores: <<Arreglo>>[3] Entero
suma: Entero

2. Método establecerValores(listaValores[]: <<Arreglo>> Cadena)


valores = listaValores
Fin Método establecerValores

3. Método obtenerValores()
return valores
Fin Método obtenerValores

120 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

4. Método calcularSuma()
// Encontrar la implementación para este método
Fin Método calcularSuma

5. Método obtenerSuma()
return suma
Fin Método obtenerValores

Fin Clase Clase1


Clase Ejecutar
1. Método principal()
a. Declarar Variables
lista_valores: <<Arreglo>>[3] Entero

b. for i = 0; i<3; i++


1. Solicitar lista_valores[i]
2. Leer lista_valores[i]
c. endfor
d. Clase1 c = new Clase1()
e. Establecer:
clase.establecerValores(lista_valores)
f. Calcular: c.calcularSuma()
g. Imprimir “La suma de los valores es”,
a. obtenerSuma(),
Fin Método principal
Fin Clase Ejecutar
Fin

Implementaciones del método calcularSuma

Opción A)
1. Método calcularSuma()
a. suma = 0
for i = 0; i<3; i++
1. suma = suma + valores[i]
endfor
Fin Método calcularSuma

121 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Opción B)
1. Método calcularSuma()
a. suma = 0
for i = 0; i<3; i++
1. suma = suma + valores[0]
endfor
Fin Método calcularSuma

Opción C)
1. Método calcularSuma()
a. suma = 0
for i = 0; i<3; i++
1. suma = valores[0]
endfor
Fin Método calcularSuma

a. Opción A
b. Opción B
c. Opción C

5. Dadas las siguientes clases, identifique la implementación correcta para la


clase Ejecutar, que permita asignar valores correctamente al atributo valores
de la Clase1.

Clase Docente
1. Declarar
edad: Entero

2. Método establecerEdad(c: Entero)


edad = c
Fin Método establecerEdad

3. Método obtenerEdad()
return edad
Fin Método obtenerEdad

122 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Clase Clase1
1. Declarar
// se declaran datos o atributos
valores: <<Arreglo>>[3] Docente

2. Método establecerValores(listaValores[]: <<Arreglo>> Docente)


valores = listaValores
Fin Método establecerValores

3. Método obtenerValores()
return valores
Fin Método obtenerValores

Fin Clase Clase1

Implementaciones de la Ejecutar

Opción A)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
lista_valores: <<Arreglo>>[3] Docente

b. Docente d = new Docente()


d.establecerEdad(30)
Docente d2 = new Docente()
d2.establecerEdad(32)
Docente d3 = new Docente()
d3.establecerEdad(31)
lista_valores[0] = d
lista_valores[1] = d2
lista_valores[2] = d3

Clase1 c1 = new Clase1()


c1.establecerValores(lista_valores)
Fin Método principal

123 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Fin Clase Ejecutar


Fin

Opción B)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
lista_valores: <<Arreglo>>[3] Docente
b. Docente d = new Docente()
d.establecerEdad(30)
Docente d2 = new Docente()
d2.establecerEdad(32)
Docente d3 = new Docente()
d3.establecerEdad(31)
lista_valores[0] = d
lista_valores[1] = d2
lista_valores[2] = d3

Clase1 c1 = new Clase1()


c1.establecerValores(d1, d2, d3)
Fin Método principal
Fin Clase Ejecutar
Fin

Opción C)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
lista_valores: <<Arreglo>>[3] Docente
b. Docente d = new Docente()
d.establecerEdad(30)
Docente d2 = new Docente()
d2.establecerEdad(32)
Docente d3 = new Docente()
d3.establecerEdad(31)
lista_valores[0] = d

124 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

lista_valores[1] = d2
lista_valores[2] = d3

Clase1 c1 = new Clase1()


c1.establecerValores(lista_valores[2])
Fin Método principal
Fin Clase Ejecutar
Fin

a. Opción A
b. Opción B
c. Opción C

Felicito su empeño y dedicación, ahora es momento de iniciar una


nueva unidad de estudio.

125 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

UNIDAD 5. HERENCIA EN PROGRAMACIÓN ORIENTADA A OBJETOS

Hemos llegado a un apartado tan interesante como importante, el


estudio de herencia, superclase y subclase. Para ello se solicita
revisar el contenido del texto básico en el capítulo Programación
orientada a objetos usando herencia, secciones: Herencia, Diseño del diagrama
de clases con herencia y Diseño de algoritmos OO usando herencia.

5.1. Concepto de Herencia

La herencia en el paradigma de orientación a objetos permite reutilizar código


a los desarrolladores a través de la abstracción de información, asociando
características comunes de objetos, generando una relación de superclases y
subclases.

5.1.1. Superclases y Subclases

Cuando se realiza el diseño de la solución a una problemática usando el


mecanismo de herencia, se necesita realizar un análisis que permita asociar
en una sola clase (superclase) el conjunto de datos o atributos y métodos que
sean compartidos por un conjunto de clases específicas (subclases) que puedan
heredar de la superclase.

Importante, las superclases no son usadas para instanciar objetos, lo que se


instancia son las subclases. La superclase es conocida también como clase padre
o principal; y las subclases se las puede denominar como clase hija o secundaria.

Una subclase puede agregar (a parte de los atributos y métodos heredados):

▪▪ Atributos o datos
▪▪ Métodos o procedimientos

126 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Importante, las subclases pueden sobrescribir métodos o procedimientos


heredados, en función de su lógica.

La relación entre las subclases y superclases se representa con las siguientes


frases:

▪▪ Una subclase “es un” o “es una” superclase


▪▪ Una subclase “se deriva de” superclase
▪▪ Una subclase “hereda de” superclase

Ejemplo:

En una problemática se tiene dos clases:

▪▪ Clase uno que representa los objetos para Estudiantes Presenciales con
atributos o datos:
• nombres
• apellidos
• edad
• identificación
• número de créditos
• costo del crédito

▪▪ Clase dos que representa los objetos para Estudiantes Distancia con
atributos o datos:
• nombres
• apellidos
• edad
• identificación
• número de asignaturas
• costo de asignatura

Entre las dos clases se tienen características (atributos o datos) comunes, dichas
características permiten generar una clase superior que contenga los comunes

127 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

entre las clases; y los atributos que no son comunes quedan en las clases
iniciales.

Como resultado se generan ahora tres clases:

▪▪ Clase uno denominada Estudiante con atributos o datos comunes:


• nombres
• apellidos
• edad
• identificación

▪▪ Clase dos que representa los objetos para Estudiantes Presenciales que
hereda de la clase Estudiante, pero con atributos o datos particulares:
• numero de créditos
• costo del crédito
• matricula presencial

▪▪ Clase tres que representa los objetos para Estudiantes Distancia que
hereda de la clase Estudiante, pero con atributos o datos particulares:
• número de asignaturas
• costo de asignatura
• matricula distancia

5.2. Uso de Diagramas de Clase con Herencia

Para la representación de la herencia en un diagrama de clases se utiliza la


siguientes figuras o líneas:

▪▪ La representación de clases se realiza a través de la Figura 22.

Figura 22. Representación de una clase.


Elaborado por: Elizalde, R. (2018).

128 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

▪▪ La representación de la relación entre las subclases y superclases es con la


siguiente línea, ilustrada en la Figura 23:

Figura 23. Conectores para representar Herencia entre clases


Elaborado por: Elizalde, R. (2018).

Importante: La flecha parte de la subclase y apunta a la superclase

Ejemplo:

Se desea representar en diagrama de clases las siguientes entidades:

▪▪ Clase uno denominada Estudiante con atributos o datos comunes:


• nombres
• apellidos
• edad
• identificación

▪▪ Clase dos que representa los objetos para Estudiantes Presenciales que
hereda de la clase Estudiante, pero con atributos o datos particulares:
• número de créditos
• costo del crédito
• matricula presencial

▪▪ Clase tres que representa los objetos para Estudiantes Distancia que hereda
de la clase Estudiante, pero con atributos o datos particulares:
• número de asignaturas
• costo de asignatura
• matricula distancia

129 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

En la Figura 24, se genera el diagrama de clases que representa las


clases involucradas en la problemática: Estudiante, EstudiantePresencial,
EstudianteDistancia:

Figura 24. Diagrama de Clases con Herencia


Elaborado por: Elizalde, R. (2018).

Explicación:

▪▪ La superclase de la jerarquía es la clase denominada Estudiante, que tiene


los atributos (nombres, apellidos, identificación y edad), se usa el símbolo #
(en cada atributo) que indica una visibilidad de protegido (protected) para
permitir el uso y manipulación por parte de las subclases. Además, se indica
en el diagrama de la clase Estudiante los métodos establecer y obtener
para cada atributo

▪▪ Las clases EstudiantePresencial y EstudianteDistancia son subclases


de la clase Estudiante, en el diagrama se representa la relación entre las
clases haciendo uso de la línea que indica la herencia; además se indica el
nombre de la relación entre las clases a través de la frase “es un”.

130 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

▪▪ Por medio de herencia las clases EstudiantePresencial y


EstudianteDistancia pueden hacer uso del conjunto de atributos y métodos
de la clase Estudiante, pero en el diagrama se representa en cada clase
las particularidades que poseen con relación a su clase padre. La clase
EstudiantePresencial con los atributos número de créditos, costo del
crédito y matricula presencial; y cada atributo posee sus métodos establecer
y obtener y la clase EstudianteDistancia con los atributos número de
asignaturas, costo de asignatura y matricula distancia; de igual manera, cada
atributo en esta clase tiene los métodos establecer y obtener.

5.3. Algoritmos Orientados a Objetos con Herencia

La representación de la herencia en miniespecificación se la realiza de la


siguiente manera:

Se tiene una clase como sigue:

Clase Principal

1. Declarar datos o atributos de la clase (superclase), se los declara con


visibilidad de protegido

2. Declara los métodos de la clase (superclase)


a. Métodos establecer
b. Métodos obtener
Fin Clase Principal

Para indicar que una clase hereda o se deriva de una clase se usa la forma:

Clase Secundaria hereda de Principal


1. Declarar datos a atributos particulares de la subclase
2. Declarar métodos propios de la subclase
3. (opcional)Sobrescribir métodos de la superclase
Fin Clase Secundaria

131 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Explicación:

▪▪ En la declaración de la clase Secundaria se agrega la leyenda “hereda de”,


que implica la herencia de los atributos y métodos de la superclase Principal.

Importante, la visibilidad de los atributos de la superclase debe ser


protegidos, lo que permite la manipulación de los mismos por parte de la
subclase.

▪▪ Si la lógica requiere que la subclase Secundaria, tenga sus propios


atributos o métodos se los puede declarar e implementar.

▪▪ Es posible que la sublcase pueda sobrescribir métodos de la superclase,


de acuerdo a las necesidades

Ejemplo:

Se desea generar una miniespecificación o pseudocódigo para la problemática


representada en las entidades o clases siguientes:

▪▪ Clase uno denominada Estudiante con atributos o datos comunes:


• nombres
• apellidos
• edad
• identificación

▪▪ Clase dos que representa los objetos para Estudiantes Presenciales que
hereda de la clase Estudiante, pero con atributos o datos particulares:
• número de créditos
• costo del crédito
• matricula presencial

132 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

▪▪ Clase tres que representa los objetos para Estudiantes Presenciales que
hereda de la clase Estudiante, pero con atributos o datos particulares:
• número de asignaturas
• costo de asignatura
• matricula distancia

Miniespecificación o Pseudocódigo

Importante, en el desarrollo de la solución se han incluido comentarios para la


explicación de los diversos procesos; las líneas que representan comentarios son
todas aquellas que empiezan con el símbolo //

Algoritmo CALCULAR COSTO DE MATRICULA DE UN ESTUDIANTE DE


DIVERSAS MODALIDADES

Clase Estudiante
1. Declarar
// se declaran datos o atributos con visibilidad protegido,
// para que se puedan manipular por las clases derivadas
# nombresEstudiante: Cadena
# apellidosEstudiante: Cadena
# identificacionEstudiante: Cadena
# edadEstudiante: Entero

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombresEstudiante(nom: Cadena)
a. nombresEstudiante = nom
b. Fin Método establecerNombresEstudiante

3. Método establecerApellidoEstudiante(ape: Cadena)


a. apellidosEstudiante = ape
b. Fin Método establecerApellidoEstudiante

133 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

4. Método establecerIdentificacionEstudiante(iden: Cadena)


a. identificacionEstudiante = iden
b. Fin Método establecerIdentificacionEstudiante

5. Método establecerEdadEstudiante(ed: Entero)


a. edadEstudiante = ed
b. Fin Método establecerEdadEstudiante

// Métodos obtener para los datos o atributos de la clase


6. Método obtenerNombresEstudiante() : Cadena
a. return nombresEstudiante
b. Fin Método obtenernombresEstudiante

7. Método obtenerApellidoEstudiante() : Cadena


a. return apellidosEstudiante
b. Fin Método obtenerApellidoEstudiante

8. Método obtenerIdentificacionEstudiante() : Cadena


a. return identificacionEstudiante
b. Fin Método obtenerIdentificacionEstudiante

9. Método obtenerEdadEstudiante()
a. return edadEstudiante
b. Fin Método obtenerEdadEstudiante

Fin Clase Estudiante

Clase EstudiantePresencial hereda de Estudiante


1. Declarar
numeroCreditos: Entero
costoCredito: Real
matriculaPresencial: Real

134 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNumeroCreditos(numero: Entero)
a. numeroCreditos = numero
b. Fin Método establecerNumeroCreditos

3. Método establecerCostoCredito(valor: Real)


a. costoCredito = valor
b. Fin Método establecerCostoCredito

4. Método calcularMatriculaPresencial()
a. matriculaPresencial = numeroCreditos * costoCredito
b. Fin Método calcularMatriculaPresencial

// Métodos obtener para los datos o atributos de la clase


5. Método obtenerNumeroCreditos() : Entero
a. return numeroCreditos
b. Fin Método obtenerNumeroCreditos

6. Método obtenerCostoCredito() : Real


a. return costoCredito
b. Fin Método obtenerCostoCredito

7. Método obtenerMatriculaPresencial() : Real


a. return matriculaPresencial
b. Fin Método obtenerMatriculaPresencial

Fin Clase EstudiantePresencial

Clase EstudianteDistancia hereda de Estudiante


1. Declarar
numeroAsignaturas: Entero
costoAsignatura: Real
matriculaDistancia: Real

135 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNumeroAsginaturas(numero: Entero)
a. numeroAsignaturas = numero
b. Fin Método establecerNumeroAsginaturas

3. Método establecerCostoAsignatura(valor: Real)


a. costoAsginatura = valor
b. Fin Método establecerCostoAsignatura

4. Método calcularMatriculaDistancia()
a. matriculaDistancia = numeroAsignaturas * costoAsginatura
b. Fin Método calcularMatriculaDistancia

// Métodos obtener para los datos o atributos de la clase


5. Método obtenerNumeroAsignaturas() : Entero
a. return numeroAsignaturas
b. Fin Método obtenerNumeroAsignaturas

6. Método obtenerCostoAsignatura() : Real


a. return costoAsginatura
b. Fin Método obtenerCostoAsignatura

7. Método obtenerMatriculaDistancia() : Real


a. return matriculaDistancia
b. Fin Método obtenerMatriculaDistancia

Fin Clase EstudiantePresencial

Clase EjecutaEstudiante
1. Método principal()
// Se declaran variables
a. Declarar Variables
nombresEst: Cadena
apellidosEst: Cadena

136 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

identificacionEst: Cadena
edadEst: Entero
costoCred: Real
numeroCreds: Entero
costoAsig: Real
numeroAsigs: Entero
tipoEstudiante: Entero
continuar: Carácter

b. // Inicio ciclo repetitivo que permite generar objetos de tipo


// EstudiantePresencial y EstudianteDistancia hasta que el usuario
// decida salir del proceso.
do
// Se imprime mensaje en pantalla para solicitar
// el tipo de estudiante que se desea ingresar
1. Imprimir “Tipo de Estudiante a ingresar
1. Estudiante Presencial
2. Estudiante Distancia”
// se captura el valor ingresado por el usuario en
// la variable tipoEstudiante
2. Leer tipoEstudiante
// Solicitar el ingreso de valores para las variables
3. Solicitar nombresEst, apellidosEst, identificacionEst, edadEst
4. Leer nombresEst, apellidosEst, identificacionEst, edadEst
5. if tipoEstudiante == 1 then
a. // Declarar,crear e iniciar objeto tipo EstudiantePresencial
EstudiantePresencial estudianteP = new
EstudiantePresencial()
b. // Solicitar ingreso de valores para variables
// número de créditos, costo de cada crédito
Solicitar numeroCreds, costoCred
c. Leer numeroCreds, costoCred

137 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

d. // se utiliza los métodos establecer para asignar valores


// a los datos (atributos) del objeto
Establecer:
estudianteP.establecerNombresEstudiante(nombresE
st),
estudianteP.establecerApellidoEstudiante(apellidosEst),
estudianteP.establecerIdentificacionEstudiante(identific
acionEst),
estudianteP.establecerEdadEstudiante(edadEst),
estudianteP.establecerNumeroCreditos(numeroCredi
to),
estudianteP.establecerCostoCredito(costoCredito)

e. // Luego que se ha ingresado los datos, se utiliza el método


// calcular Matricula Presencial para el objeto tipo
// EstudiantePresencial
Calcular: estudianteP.calcularMatriculaPresencial()

f. // se utiliza los métodos obtener del objeto para presentar


// los valores que se necesite en pantalla
Imprimir:
estudianteP.obtenerNombresEstudiante(),
estudianteP.obtenerApellidoEstudiante(),
estudianteP.obtenerIdentificacionEstudiante()
estudianteP.obtenerEdadEstudiante()
estudianteP.obtenerMatriculaPresencial()

6. else
// Si el usuario ingresa un número diferente del valor 1 para
// tipoEstudiante se procede a crear los procesos necesarios para
// crear un objeto de tipo EstudianteDistancia

a. // Declarar,crear e iniciar objeto tipo EstudianteDistancia


EstudianteDistancia estudianteD = new EstudianteDistancia()

138 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

b. // Solicitar ingreso de valores para variables


// número de asignaturas, costo de cada asignatura
Solicitar numeroAsigs, costoAsig
c. Leer numeroAsigs, costoAsig
d. // se utiliza los métodos establecer para asignar valores
// a los datos (atributos) del objeto
Establecer:
estudianteD.establecerNombresEstudiante(nombresE
st),
estudianteD.establecerApellidoEstudiante(apellidosE
st),
estudianteD.establecerIdentificacionEstudiante(identific
acionEst),
estudianteD.establecerEdadEstudiante(edadEst),
estudianteD.establecerNumeroAsginaturas(numeroAsi
gs),
estudianteD.establecerCostoAsignatura(costoAsig)

e. // Luego que se ha ingresado los datos, se utiliza el método


// calcular Matricula Distancia para el objeto tipo
// EstudianteDistancia
Calcular: estudianteD.calcularMatriculaDistancia()
f. // se utiliza los métodos obtener del objeto para presentar
// los valores que se necesite en pantalla
Imprimir:
estudianteP.obtenerNombresEstudiante(),
estudianteP.obtenerApellidoEstudiante(),
estudianteP.obtenerIdentificacionEstudiante()
estudianteP.obtenerEdadEstudiante()
estudianteP.obtenerMatriculaDistancia()

7. endif

139 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

8. // Se pregunta si se desea ingresar más estudiante


Imprimir “Desea ingresar más estudiante. Digite la letra S para
continuar o digite la letra N para salir del proceso”
9. // se captura el valor ingresado por el usuario para la variable
// carácter
Leer continuar
// se pregunta si el valor continuar es igual al valor “S”, se sigue en
// ciclo repetitivo; si el valor es distinto de “S”, se sale del ciclo
// repetitivo
c. while continuar == “S”
d. Fin Método principal

Fin Clase EjecutaEstudiante


Fin

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de programación.
Programación

Momento de verificar los conocimientos adquiridos durante el


estudio de la presente unidad. Desarrollemos analítica y
razonadamente la siguiente autoevaluación.

140 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Autoevaluación 5

A continuación, se presentan preguntas relacionadas a la temática de


herencia. Se solicita revisar la unidad número 5 de la presente guía y
el capítulo Programación orientada a objetos usando herencia del
texto básico para contestar las interrogantes. La autoevaluación permitirá a usted,
reafirmar los conceptos estudiados.

Los siguientes enunciados son de opción múltiple, cada uno de ellos tiene una
sola respuesta correcta. Lea atentamente cada pregunta y seleccione la opción
que usted considere como válida en cada situación.

1. En el marco del concepto de Herencia, ¿cuál de las siguientes ideas son


correctas?

a. La herencia permite a las subclases heredar solo los datos (atributos).


b. La herencia permite a las subclases heredar solo los métodos de la
superclase.
c. La herencia permite a las subclases heredar los datos (atributos) y los
métodos de la superclase.

2. ¿Cuál de las siguientes frases representan la relación entre una superclase y


subclase, dentro del ámbito de herencia?

a. Una superclase “se deriva de” subclase


b. Una subclase “se deriva de” superclase
c. Una subclase “tiene una” superclase

141 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

3. En miniespecificación, ¿cómo se declara una clase que hereda de una


superclase?

a. Clase Herencia: Secundaria de Principal


b. Clase Secundaria hereda de Principal
c. Clase Secundaria tienen un Principal

4. ¿Para qué los atributos de una superclase puedan ser manipulados por las
subclases, qué tipo de visibilidad deben poseer?

a. Privados
b. Públicos
c. Protegidos

5. Si una subclase necesita crear sus propios datos o métodos, ¿cuál es la


solución de implementación?

a. La subclase no puede declarar o implementar sus propios datos o


métodos
b. La subclase puede declarar e implementar sus propios datos o
métodos, dentro de su clase.
c. La subclase puede declarar e implementar sus propios datos o
métodos, dentro de la superclase.

142 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

6. En base al siguiente diagrama de clases, determine, ¿cuál de las siguientes


miniespecificaciones tiene un error de implementación?

Miniespecificaciones:

A)
Clase Ejecutar
1. Método principal()
a. Declarar
valor: Entero
valor = 20
b. EstudiantePresencial e = new EstudiantePresencial()
e.establecerNombresEstudiante(valor)
Fin Método principal
Fin Clase Ejecutar

B)
Clase Ejecutar
1. Método principal()
a. Declarar
valor: Cadena
valor = “José”

143 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

b. EstudiantePresencial e = new EstudiantePresencial()


e.establecerNombresEstudiante(valor)
Fin Método principal
Fin Clase Ejecutar

C)
Clase Ejecutar
1. Método principal()
a. Declarar
valor: Cadena
valor = “Sanchez”
b. EstudiantePresencial e = new EstudiantePresencial()
e.establecerApellidosEstudiante(valor)
Fin Método principal
Fin Clase Ejecutar

a. A
b. B
c. C

7. En base al siguiente diagrama de clases, determine la miniespecificación


correcta.

144 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Miniespecificaciones

A)
Clase Ejecutar
1. Método principal()
a. Declarar
valor: Entero
valor = 20
b. EstudiantePresencial e = new EstudiantePresencial()
e.establecerNumeroAsginaturas(valor)
Fin Método principal
Fin Clase Ejecutar

B)
Clase Ejecutar
1. Método principal()
a. Declarar
valor: Entero
valor = 20
b. EstudianteDistancia e = new EstudianteDistancia()
e.establecerNumeroCreditos(valor)
Fin Método principal
Fin Clase Ejecutar

C)
Clase Ejecutar
1. Método principal()
a. Declarar
valor: Entero
valor = 20
b. EstudianteDistancia e = new EstudianteDistancia()
e.establecerEdad(valor)
Fin Método principal
Fin Clase Ejecutar

145 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

a. A
b. B
c. C

8. En base a la siguiente miniespecificación, determine el diagrama de clases


correcto.

Clase Principal
1. Declarar
# atributo1: Cadena
# atributo2: Cadena

2. Método establecerAtributo1(nom: Cadena)


a. atributo1 = nom
b. Fin Método establecerAtributo1

3. Método establecerAtributo2(ape: Cadena)


a. atributo2 = ape
b. Fin Método establecerAtributo2

4. Método obtenerAtributo1() : Cadena


a. return atributo1
b. Fin Método obtenerAtributo1

5. Método obtenerAtributo2() : Cadena


a. return atributo2
b. Fin Método obtenerAtributo2

Fin Clase Principal

Clase Secundaria hereda de Principal


1. Declarar
atributo3: Cadena

146 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

2. Método establecerAtributo3(nom: Cadena)


a. atributo3 = nom
b. Fin Método establecerAtributo3

3. Método obtenerAtributo3() : Cadena


a. return atributo3
b. Fin Método obtenerAtributo3
Fin Clase Secundaria

Diagramas de clases

147 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

a. Opción A
b. Opción B
c. Opción C

148 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

9. Dadas las siguientes clases expresadas en miniespecificación:

Clase Principal
1. Declarar
# atributo1: Cadena
# atributo2: Cadena

2. Método establecerAtributo1(nom: Cadena)


a. atributo1 = nom
b. Fin Método establecerAtributo1

3. Método establecerAtributo2(ape: Cadena)


a. atributo2 = ape
b. Fin Método establecerAtributo2

4. Método obtenerAtributo1() : Cadena


a. return atributo1
b. Fin Método obtenerAtributo1

5. Método obtenerAtributo2() : Cadena


a. return atributo2
b. Fin Método obtenerAtributo2

Fin Clase Principal

Clase Secundaria hereda de Principal


1. Declarar
atributo3: Cadena

2. Método establecerAtributo3(nom: Cadena)


a. atributo3 = nom
b. Fin Método establecerAtributo3

149 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

3. Método obtenerAtributo3(): Cadena


a. return atributo3
b. Fin Método obtenerAtributo3

Fin Clase Secundaria

Determine cuál sería la implementación correcta de una clase Ejecutar que


permita presentar en pantalla:

Loja
Provincia
Ecuador
Donde:
a1 = “Loja”
a2 = “Provincia”
a3 = “Ecuador”

A)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
a1: Cadena
a2: Cadena
a3: Cadena

b. Solicitar atributo 1,
atributo 2,
atributo 3

c. Leer a1,
a2,
a3,

150 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

d. Establecer s.establecerAtributo1(a1),
s.establecerAtributo2(a2),
s.establecerAtributo3(a3)
e. Imprimir s.obtenerAtributo1(),
s.obtenerAtributo2(),
s.obtenerAtributo3()
f. Fin Método principal
Fin Clase Ejecuta

B)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
a1: Cadena
a2: Cadena
a3: Cadena

b. Secundaria s = new Secundaria()


c. Solicitar atributo 1,
atributo 2,
atributo 3
d. Leer a1,
a2,
a3,
e. Establecer s.establecerAtributo1(a1),
s.establecerAtributo2(a2),
s.establecerAtributo3(a3)
f. Imprimir s.obtenerAtributo1(),
s.obtenerAtributo2(),
s.obtenerAtributo3()
g. Fin Método principal
Fin Clase Ejecuta

151 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

C)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
a1: Cadena
a2: Cadena
a3: Cadena
b. Secundaria s = new Secundaria()
c. Solicitar atributo 1,
atributo 2,
atributo 3

d. Leer a1,
a2,
a3,

e. Imprimir s.obtenerAtributo1(),
s.obtenerAtributo2(),
s.obtenerAtributo3()

f. Fin Método principal


Fin Clase Ejecuta

a. A
b. B
c. C

10. Dadas las siguientes clases expresadas en miniespecificación:

Clase Principal
1. Declarar
# atributo1: Cadena
# atributo2: Cadena

152 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

2. Método establecerAtributo1(nom: Cadena)


a. atributo1 = nom
b. Fin Método establecerAtributo1

3. Método establecerAtributo2(ape: Cadena)


a. atributo2 = ape
b. Fin Método establecerAtributo2

4. Método obtenerAtributo1(): Cadena


a. return atributo1
b. Fin Método obtenerAtributo1

5. Método obtenerAtributo2(): Cadena


a. return atributo2
b. Fin Método obtenerAtributo2

Fin Clase Principal

Clase Secundaria hereda de Principal


1. Declarar
atributo3: Cadena

2. Método establecerAtributo3(nom: Cadena)


a. atributo3 = nom
b. Fin Método establecerAtributo3

3. Método obtenerAtributo3(): Cadena


a. return atributo3
b. Fin Método obtenerAtributo3

Fin Clase Secundaria

Clase Secundaria2 hereda de Principal


1. Declarar
atributo4: Cadena

153 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

2. Método establecerAtributo4(nom: Cadena)


a. atributo4 = nom
b. Fin Método establecerAtributo4

3. Método obtenerAtributo4(): Cadena


a. return atributo4
b. Fin Método obtenerAtributo4
Fin Clase Secundaria2

Determine, cuál de las siguientes implementaciones de la clase Ejecuta, no


generaría ningún error.

A)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
a1: Cadena
a2: Cadena
a3: Cadena
b. Secundaria s = new Secundaria()
c. Solicitar atributo 1, atributo 2, atributo 3
d. Leer a1, a2, a3,
e. Establecer s.establecerAtributo1(a1),
s.establecerAtributo2(a2),
s.establecerAtributo4(a3)
f. Imprimir s.obtenerAtributo1(),
s.obtenerAtributo2(),
s.obtenerAtributo4()
g. Fin Método principal
Fin Clase Ejecuta

154 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

B)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
a1: Cadena
a2: Cadena
a3: Cadena
b. Secundaria s = new Secundaria()
c. Solicitar atributo 1, atributo 2, atributo 3
d. Leer a1, a2, a3,
e. Establecer s.establecerAtributo1(a1),
s.establecerAtributo2(a2),
s.establecerAtributo3(a3)
f. Imprimir s.obtenerAtributo1(),
s.obtenerAtributo2(),
s.obtenerAtributo3()
g. Fin Método principal
Fin Clase Ejecuta

C)
Clase Ejecutar
1. Método principal()
a. Declarar Variables
a1: Cadena
a2: Cadena
a3: Cadena
b. Secundaria2 s = new Secundaria2()
c. Solicitar atributo 1, atributo 2, atributo 3
d. Leer a1, a2, a3,
e. Establecer s.establecerAtributo1(a1),
s.establecerAtributo2(a2),
s.establecerAtributo3(a3)

155 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

f. Imprimir s.obtenerAtributo1(),
s.obtenerAtributo2(),
s.obtenerAtributo4()
g. Fin Método principal
Fin Clase Ejecuta

a. A
b. B
c. C

Buen trabajo. Ahora es tiempo de revisar la unidad relacionada


con Polimorfismo. ¡Avancemos!

156 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

UNIDAD 6. POLIMORFISMO EN PROGRAMACIÓN ORIENTADA A OBJETOS

Distinguidos estudiantes hemos llegado a la última unidad de


Programación orientada a objetos, que satisfacción saber que su
esfuerzo y dedicación les han permitido llegar hasta este punto. Para
el estudio del presente apartado, se solicita revisar el contenido del
texto básico en el capítulo Programación orientada a objetos usando polimorfismo,
secciones: Polimorfismo, Diseño del diagrama de clases con polimorfismo y
Diseño de algoritmos OO usando polimorfismo. Éxitos en el desarrollo.

6.1. Concepto de Polimorfismo

El polimorfismo se usa con la finalidad de crear métodos de comportamiento


dinámico que se implementan de forma apropiada de acuerdo a las características
que lo requiere la clase involucrada. Para generar una jerarquía de herencia
usando el polimorfismo se necesita algunos elementos: la creación de una
superclase abstracta, la declaración de al menos un método abstracto en la
superclase y la implementación de clases derivadas.

6.1.1. Clases y Métodos Abstractos

Las superclases abstractas son entidades (clases) que tienen al menos un


método abstracto que permiten implementar el polimorfismo en las subclases;
los métodos abstractos declarados en las clases abstractas no pueden ser
implementados en dichas clases, solo se define su encabezado; dichos
métodos abstractos serán implementados de forma obligatoria por las clases
derivadas (subclases) de la abstracta.

Importante, las clases abstractas no se pueden instanciar, solo permiten derivar


subclases.

157 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

6.2. Uso de Diagramas de Clase con Polimorfismo

Para la representación de la herencia en un diagrama de clases se utiliza la


siguientes figuras o líneas:

▪▪ La representación de las clases se realiza a través de las siguientes


características, representadas en la Figura 25:

Figura 25. Representación de Abstracción de Clases y Subclases.


Elaborado por: Elizalde, R. (2018).

▪▪ La representación de la relación entre las subclases y superclase abstracta


se realiza con la siguiente línea, ilustrado en la Figura 26:

Figura 26. Conectores de Herencia


Elaborado por: Elizalde, R. (2018).

Importante: La fecha parte de la subclase y apunta a la superclase abstracta

158 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Ejemplo:

Se desea representar en diagrama de clases las siguientes entidades:

▪▪ Clase uno denominada Estudiante con atributos o datos comunes:


• nombres
• apellidos
• edad
• identificación
• matricula

▪▪ Clase dos que representa los objetos para Estudiantes Presenciales que
hereda de la clase Estudiante, pero con atributos o datos particulares:
• número de créditos
• costo del crédito

▪▪ Clase tres que representa los objetos para Estudiantes Presenciales que
hereda de la clase Estudiante, pero con atributos o datos particulares:
• número de asignaturas
• costo de asignatura

Se genera el siguiente diagrama de clases, ilustrada en la Figura 27, como


solución:

159 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Figura 27. Diagrama de Clases con Polimorfismo.


Elaborado por: Elizalde, R. (2018).

Explicación:

▪▪ La superclase de la jerarquía es la clase denominada Estudiante que es


graficada como abstracta, anteponiendo la palabra de la siguiente forma

<<abstracta>>
Estudiante

Importante, para representar una clase abstracta en diagrama de clases, se


antepone entre la palabra abstracta entre los símbolos << >> o {}.

Se tiene declarados los atributos (nombres, apellidos, identificación, edad y


matricula), se usa el símbolo # (en cada atributo) que indica una visibilidad
protegida (protected) para permitir el uso y manipulación por parte de las
subclases. Además, se indica en el diagrama de la clase Estudiante los
métodos establecer y obtener para cada atributo. Es importante resaltar
que la clase abstracta debe tener al menos declarado un método abstracto,
con el fin de obligar a su implementación por parte de las clases que se
derivan; en la clase Estudiante se declara el método abstracto.

160 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

+<<*>> calcular_matricula()

Importante, para representar el método abstracto se antepone un asterisco


al nombre del método.

▪▪ Las clases EstudiantePresencial y EstudianteDistancia son subclases


de la clase Estudiante, en el diagrama se representa la relación entre
las clases haciendo uso de la línea que indica la herencia, pero al
representar una clase abstracta, se está representando una jerarquía de
polimorfismo; además se indica el nombre de la relación entre las clases a
través de la frase “es un”.

▪▪ Las subclases las clases EstudiantePresencial y EstudianteDistancia


pueden hacer uso del conjunto de atributos y métodos de la clase
abstracta Estudiante, pero en el diagrama se representa en cada clase
las particularidades que poseen en relación a su clase padre. La clase
EstudiantePresencial con los atributos número de créditos y costo del
crédito; y cada atributo posee sus métodos establecer y obtener y la clase
EstudianteDistancia con los atributos número de asignaturas y costo de
asignatura; de igual manera, cada atributo en esta clase tiene los métodos
establecer y obtener. Hay que tomar en consideración que las clases
EstudiantePresencial y EstudianteDistancia están heredando de una
clase abstracta, por tal razón, tienen la obligación de implementar el método
o métodos abstractos de la superclases; para el ejemplo se trata del método
calcular_matricula().

161 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

6.3. Algoritmos Orientados a Objetos con Polimorfismo

La representación del polimorfismo en miniespecificación se la realiza de la


siguiente manera:

Se tiene una clase como sigue:

Clase abstracta Principal


1. Declarar datos o atributos de la clase (superclase)

2. Declara los métodos de la clase (superclase)


a. Métodos establecer
b. Métodos obtener
3. Declarar al menos un método abstracto.
Importante, solo se debe declarar, no implementar
Ejemplo:
Método abstracto calcularValores()

Fin Clase Principal

Clase Secundaria hereda de Principal


1. Declarar datos a atributos particulares de la subclase

2. Declarar métodos propios de la subclase

3. Implementar de forma obligatoria los métodos abstractos de la superclase


Método calcularValores()
a. Lógica propia de la subclase
Fin Método calcularValores

4. (opcional)Sobrescribir métodos de la superclase

Fin Clase Secundaria

162 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Explicación:

▪▪ Para ejemplificar el polimorfismo se necesita declarar como superclase una


clase de tipo abstracta. En la declaración de la clase Principal se agrega la
palabra abstracta, de la forma:

Clase abstracta Principal

▪▪ Las clases abstractas requieren que al menos tenga declarado un método


abstracto; la declaración de un método abstracto es de la forma:

Método abstracto calcularValores()

Se agrega la palabra abstracto, luego de la palabra método

▪▪ En la declaración de la clase Secundaria se agrega la leyenda “hereda de”,


que implica la herencia de los atributos y métodos de la superclase abstracta
Principal.

Importante, la visibilidad de los atributos de la superclase debe ser


protegidos, lo que permite la manipulación de los mismos por parte de la
subclase.

▪▪ Si la lógica requiere que la subclase Secundaria, tenga sus propios


atributos o métodos se los puede declarar e implementar.

▪▪ La subclase debe implementar de forma obligatoria los métodos abstractos


de su superclase.

Método calcularValores()
a. Lógica propia de la subclase
Fin Método calcularValores

163 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

▪▪ Es posible que la subclase pueda sobrescribir métodos de la superclase,


de acuerdo a las necesidades

Ejemplo 1:

Se desea generar un algoritmo en miniespecificación de las siguientes entidades


(aplicando polimorfismo):

▪▪ Clase uno denominada Estudiante con atributos o datos comunes:


• nombres
• apellidos
• edad
• identificación
• matricula
▪▪ Clase dos que representa los objetos para Estudiantes Presenciales que
hereda de la clase Estudiante, pero con atributos o datos particulares:
• numero de créditos
• costo del crédito
▪▪ Clase tres que representa los objetos para Estudiantes Presenciales que
hereda de la clase Estudiante, pero con atributos o datos particulares:
• número de asignaturas
• costo de asignatura

Miniespecificación o Pseudocódigo

Importante, en el desarrollo de la solución se han incluido comentarios para la


explicación de los diversos procesos; las líneas que representan comentarios son
todas aquellas que empiezan con el símbolo //

164 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Algoritmo CALCULAR COSTO DE MATRICULA DE UN ESTUDIANTE DE


DIVERSAS MODALIDADES

Clase abstracta Estudiante


1. Declarar
// se declaran datos o atributos con visibilidad protegido,
// para que se puedan manipular por las clases derivadas
# nombresEstudiante: Cadena
# apellidosEstudiante: Cadena
# identificacionEstudiante: Cadena
# edadEstudiante: Entero
# matricula: Real

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNombresEstudiante(nom: Cadena)
a. nombresEstudiante = nom
b. Fin Método establecerNombresEstudiante

3. Método establecerApellidoEstudiante(ape: Cadena)


a. apellidosEstudiante = ape
b. Fin Método establecerApellidoEstudiante

4. Método establecerIdentificacionEstudiante(iden: Cadena)


a. identificacionEstudiante = iden
b. Fin Método establecerIdentificacionEstudiante

5. Método establecerEdadEstudiante(ed: Entero)


a. edadEstudiante = ed
b. Fin Método establecerEdadEstudiante

6. Método abstracto calcularMatricula()


// método sin implementar, se deja la responsabilidad
// a las clases derivadas

165 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

// Métodos obtener para los datos o atributos de la clase


7. Método obtenerNombresEstudiante() : Cadena
a. return nombresEstudiante
b. Fin Método obtenernombresEstudiante

8. Método obtenerApellidoEstudiante() : Cadena


a. return apellidosEstudiante
b. Fin Método obtenerApellidoEstudiante

9. Método obtenerIdentificacionEstudiante() : Cadena


a. return identificacionEstudiante
b. Fin Método obtenerIdentificacionEstudiante

10. Método obtenerEdadEstudiante(): Entero


a. return edadEstudiante
b. Fin Método obtenerEdadEstudiante

11. Método obtenerMatricula() : Real


a. return matricula
b. Fin Método obtenerMatricula

Fin Clase Estudiante

Clase EstudiantePresencial hereda de Estudiante


1. Declarar
numeroCreditos: Entero
costoCredito: Real

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNumeroCreditos(numero: Entero)
a. numeroCreditos = numero
b. Fin Método establecerNumeroCreditos

166 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

3. Método establecerCostoCredito(valor: Real)


a. costoCredito = valor
b. Fin Método establecerCostoCredito

// Se implementa el método abstracto declarado en la superclase,


// bajo las condiciones propias de la subclase
4. Método calcularMatricula()
a. matricula = numeroCreditos * costoCredito
b. Fin Método calcularMatricula

// Métodos obtener para los datos o atributos de la clase


5. Método obtenerNumeroCreditos() : Entero
a. return numeroCreditos
b. Fin Método obtenerNumeroCreditos

6. Método obtenerCostoCredito() : Real


a. return costoCredito
b. Fin Método obtenerCostoCredito

Fin Clase EstudiantePresencial

Clase EstudianteDistancia hereda de Estudiante


1. Declarar
numeroAsignaturas: Entero
costoAsginatura: Real

// Métodos establecer y calcular para los datos o atributos de la clase


2. Método establecerNumeroAsginaturas(numero: Entero)
a. numeroAsignaturas = numero
b. Fin Método establecerNumeroAsginaturas

3. Método establecerCostoAsignatura(valor: Real)


a. costoAsginatura = valor
b. Fin Método establecerCostoAsignatura

167 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

// Se implementa el método abstracto declarado en la superclase,


// bajo las condiciones propias de la subclase
4. Método calcularMatricula()
a. matricula = numeroAsignaturas * costoAsginatura
b. Fin Método calcularMatricula

// Métodos obtener para los datos o atributos de la clase


5. Método obtenerNumeroAsignaturas() : Entero
a. return numeroAsignaturas
b. Fin Método obtenerNumeroAsignaturas

6. Método obtenerCostoAsignatura() : Real


a. return costoAsginatura
b. Fin Método obtenerCostoAsignatura

Fin Clase EstudiantePresencial

Clase EjecutaEstudiante
1. Método principal()
// Se declaran variables
a. Declarar Variables
nombresEst: Cadena
apellidosEst: Cadena
identificacionEst: Cadena
edadEst: Entero
costoCred: Real
numeroCreds: Entero
costoAsig: Real
numeroAsigs: Entero
tipoEstudiante: Entero
continuar: Carácter

168 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

b. // Inicio ciclo repetitivo que permite generar objetos de tipo


// EstudiantePresencial y EstudianteDistancia hasta que el usuario
// decida salir del proceso.
do
// Se imprime mensaje en pantalla para solicitar
// el tipo de estudiante que se desea ingresar
1. Imprimir “Tipo de Estudiante a ingresar
1. Estudiante Presencial
2. Estudiante Distancia”
// se captura el valor ingresado por el usuario en
// la variable tipoEstudiante
2. Leer tipoEstudiante
// Solicitar el ingreso de valores para las variables
3. Solicitar nombresEst, apellidosEst, identificacionEst, edadEst
4. Leer nombresEst, apellidosEst, identificacionEst, edadEst
5. if tipoEstudiante == 1 then
a. // Declarar,crear e iniciar objeto tipo EstudiantePresencial
EstudiantePresencial estudianteP = new
EstudiantePresencial()
b. // Solicitar ingreso de valores para variables
// número de créditos, costo de cada crédito
Solicitar numeroCreds, costoCred
c. Leer numeroCreds, costoCred
d. // se utiliza los métodos establecer para asignar valores
// a los datos (atributos) del objeto
Establecer:
estudianteP.establecerNombresEstudiante(nombresE
st),
estudianteP.establecerApellidoEstudiante(apellidosEst),
estudianteP.establecerIdentificacionEstudiante(identific
acionEst),
estudianteP.establecerEdadEstudiante(edadEst),

169 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

estudianteP.establecerNumeroCreditos(numeroCredi
to),
estudianteP.establecerCostoCredito(costoCredito)

e. // Luego que se ha ingresado los datos, se utiliza el método


// abstracto <calcularMatricula> para obtener
// el costo de la Matricula Presencial para el objeto tipo
// EstudiantePresencial
Calcular: estudianteP.calcularMatricular()

f. // se utiliza los métodos obtener del objeto para presentar


// los valores que se necesite en pantalla
Imprimir:
estudianteP.obtenerNombresEstudiante(),
estudianteP.obtenerApellidoEstudiante(),
estudianteP.obtenerIdentificacionEstudiante()
estudianteP.obtenerEdadEstudiante()
estudianteP.obtenerMatricula()
6. else
// Si el usuario ingresa un número diferente del valor 1 para
// tipoEstudiante se procede a crear los procesos necesarios para
// crear un objeto de tipo EstudianteDistancia

a. // Declarar, crear e iniciar objeto tipo EstudianteDistancia


EstudianteDistancia estudianteD = new EstudianteDistancia()
b. // Solicitar ingreso de valores para variables
// número de asignaturas, costo de cada asignatura
Solicitar numeroAsigs, costoAsig
c. Leer numeroAsigs, costoAsig
d. // se utiliza los métodos establecer para asignar valores
// a los datos (atributos) del objeto
Establecer:
estudianteD.establecerNombresEstudiante(nombresE
st),

170 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

estudianteD.establecerApellidoEstudiante(apellidosE
st),
estudianteD.establecerIdentificacionEstudiante(identific
acionEst),
estudianteD.establecerEdadEstudiante(edadEst),
estudianteD.establecerNumeroAsginaturas(numeroAsi
gs),
estudianteD.establecerCostoAsignatura(costoAsig)

e. // Luego que se ha ingresado los datos, se utiliza el método


// abstracto <calcularMatricula> para obtener
// el costo de la Matricula Presencial para el objeto tipo
// EstudianteDistancia
Calcular: estudianteD.calcularMatricula()

f. // se utiliza los métodos obtener del objeto para presentar


// los valores que se necesite en pantalla
Imprimir:
estudianteP.obtenerNombresEstudiante(),
estudianteP.obtenerApellidoEstudiante(),
estudianteP.obtenerIdentificacionEstudiante()
estudianteP.obtenerEdadEstudiante()
estudianteP.obtenerMatricula()
7. endif
8. // Se pregunta si se desea ingresar más estudiante
Imprimir “Desea ingresar más estudiante. Digite la letra S
para
continuar o digite la letra N para salir del proceso”
9. // se captura el valor ingresado por el usuario para la variable
// carácter
Leer continuar
// se pregunta si el valor continuar es igual al valor “S”, se sigue en
// ciclo repetitivo; si el valor es distinto de “S”, se sale del ciclo
// repetitivo

171 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

c. while continuar == “S”


d. Fin Método principal

Fin Clase EjecutaEstudiante


Fin

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de
Programación programación.

Ejemplo 2:

Para la problemática planteada en Ejemplo 1, se genera una solución alternativa.


Las clases Estudiante, EstudiantePresencial y EstudianteDistancia no se
cambian; se realiza un procedimiento diferente para la implementación de la case
EjecutaEstudiante, se describe a continuación:

Importante, en el desarrollo de la solución se han incluido comentarios para la


explicación de los diversos procesos; las líneas que representan comentarios son
todas aquellas que empiezan con el símbolo //

Clase EjecutaEstudiante
1. Método principal()
// Se declaran variables
a. Declarar Variables
nombresEst: Cadena
apellidosEst: Cadena
identificacionEst: Cadena
edadEst: Entero
costoCred: Real

172 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

numeroCreds: Entero
costoAsig: Real
numeroAsigs: Entero
tipoEstudiante: Entero
contador: Entero
estudiantes: <<Arreglo>>[10] Estudiante

b. // Incio ciclo repetitivo que permite generar 10 objetos de tipo


// EstudiantePresencial y EstudianteDistancia

contador = 0
// El ciclo repetitivo realizará 10 procesos, desde 0 a 9
while contador < 10
// Se imprime mensaje en pantalla para solicitar
// el tipo de estudiante que se desea ingresar
1. Imprimir “Tipo de Estudiante a ingresar
1. Estudiante Presencial
2. Estudiante Distancia”
// se captura el valor ingresado por el usuario en
// la variable tipoEstudiante
2. Leer tipoEstudiante
// Solicitar el ingreso de valores para las variables
3. Solicitar nombresEst, apellidosEst, identificacionEst, edadEst
4. Leer nombresEst, apellidosEst, identificacionEst, edadEst
5. if tipoEstudiante == 1 then
a. // Declarar, crear e iniciar objeto tipo EstudiantePresencial
EstudiantePresencial estudianteP = new
EstudiantePresencial()
b. // Solicitar ingreso de valores para variables
// número de créditos, costo de cada crédito
Solicitar numeroCreds, costoCred
c. Leer numeroCreds, costoCred
d. // se utiliza los métodos establecer para asignar valores
// a los datos (atributos) del objeto

173 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Establecer:
estudianteP.establecerNombresEstudiante(nombresE
st),
estudianteP.establecerApellidoEstudiante(apellidosEst),
estudianteP.establecerIdentificacionEstudiante(identific
acionEst),
estudianteP.establecerEdadEstudiante(edadEst),
estudianteP.establecerNumeroCreditos(numeroCredi
to),
estudianteP.establecerCostoCredito(costoCredito)

e. // Se agrega al arreglo estudiantes un objeto de tipo


// EstudiantePresencial
estudiantes[contador] = estudianteP
6. else
// Si el usuario ingresa un número diferente del valor 1 para
// tipoEstudiante se procede a crear los procesos necesarios para
// crear un objeto de tipo EstudianteDistancia

a. // Declarar, crear e iniciar objeto tipo EstudianteDistancia


EstudiantePresencial estudianteD = new
EstudianteDistancia()
b. // Solicitar ingreso de valores para variables
// número de asignaturas, costo de cada asignatura
Solicitar numeroAsigs, costoAsig
c. Leer numeroAsigs, costoAsig
d. // se utiliza los métodos establecer para asignar valores
// a los datos (atributos) del objeto
Establecer:
estudianteD.establecerNombresEstudiante(nombresE
st),
estudianteD.establecerApellidoEstudiante(apellidosE
st),

174 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

estudianteD.establecerIdentificacionEstudiante(identific
acionEst),
estudianteD.establecerEdadEstudiante(edadEst),
estudianteD.establecerNumeroAsginaturas(numeroAsi
gs),
estudianteD.establecerCostoAsignatura(costoAsig)

e. // Se agrega al arreglo estudiantes un objeto de tipo


// EstudianteDistancia
estudiantes[contador] = estudianteP
7. endif
8. contador = contador + 1
c. endwhile

// Luego de crear y almacenar los objetos EstudiantePresencial


// y EstudianteDistancia, se procede a usar un ciclo repetitivo
// para recorrer el arreglo estudiantes, que permitirá:
// 1. Llamar al método abstracto calcularMatricula, de acuerdo a las
// características propias de cada objeto.
// 2. Presentar en pantalla los valores que se necesite.
e. // inicio del ciclo repetitivo
for i=0; i<10; i++

1. estudiantes[i].calcularMatricula()
// en el punto 1, estudiantes[i] representa un objeto de tipo
// EstudiantePresencial o EstudianteDistancia; en cualquiera
de los
// dos casos, para dichos objetos se llama al método
calcularMatricula()
// de acuerdo al tipo de dato. Se recuerda que
calcularMatricula, es
// un método abstracto de la clase abstracta Estudiante y fue
implementado

175 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

// de forma obligatoria en cada clase hija


(EstudiantePresencial y
// EstudianteDistancia)

2. // se utiliza los métodos obtener del objeto para presentar


// los valores que se necesite en pantalla
Imprimir:
estudiantes[i].obtenerNombresEstudiante(),
estudiantes[i].obtenerApellidoEstudiante(),
estudiantes[i].obtenerIdentificacionEstudiante()
estudiantes[i].obtenerEdadEstudiante()
estudiantes[i].obtenerMatricula()
f. endfor
d. Fin Método principal
Fin Clase EjecutaEstudiante

Estimado estudiante a través de los siguientes enlaces usted puede descargar los
archivos del ejemplo anterior:

Diagrama Desarrollo del caso planteado mediante diagrama.


Miniespecificación Desarrollo del caso planteado mediante miniespecificación.
Lenguaje de Desarrollo del caso planteado mediante lenguaje de programación.
Programación

Apreciados estudiantes, es grato llegar a este momento de


nuestro estudio. Felicito su dedicación y le invito a finalizar su
labor con el desarrollo de la siguiente autoevaluación.

176 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

Autoevaluación 6

A continuación, se presentan preguntas relacionadas a la temática


polimorfismo. Se solicita revisar la unidad número 6 de la presente
guía y el capítulo Programación orientada a objetos usando
polimorfismo del texto básico para contestar las interrogantes. La autoevaluación
permitirá a usted, reafirmar los conceptos estudiados.

Los siguientes enunciados son de opción múltiple, cada uno de ellos tiene una
sola respuesta correcta. Lea atentamente cada pregunta y seleccione la opción
que usted considere como válida en cada situación.

1. ¿Cuál es la forma correcta de representar una clase abstracta en un


diagrama de clases?

a. A
b. B
c. C

2. ¿Cuál es la característica de una clase abstracta?

a. Es opcional poseer un método abstracto


b. Tener al menos un método abstracto
c. Implementar al menos un método abstracto

177 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

3. Se necesita declarar un método abstracto en un diagrama de clases.


¿Cuál es la opción correcta?

a. #<<*>> método_abstracto()
b. +<<*>> método_abstracto()
c. + método_abstracto()

4. Se tiene las siguientes miniespecificaciones, determine la opción


correcta para la implementación de una clase abstracta.

A)

Clase abstracta Estudiante


1. Declarar

2. Método abstracto calcularMatricula()


// método sin impĺementar

Fin Clase Estudiante

B)
Clase Estudiante
1. Declarar

2. Método abstracto calcularMatricula()


// método sin impĺementar

Fin Clase Estudiante

178 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

C)
Clase abstracta Estudiante
1. Declarar
a: Entero
b: Entero
c: Entero

2. Método abstracto calcularMatricula()


c=a+b

Fin Clase Estudiante

a. A
b. B
c. C

5. ¿La visibilidad de los datos de una superclase abstracta, de qué tipo deben
ser?

a. Privados
b. Públicos y Privados
c. Protegidos

6. Se necesita implementar polimorfismo entre una superclase y subclase.


¿Cuál es la opción correcta entre las siguientes miniespecificaciones?

A)
Clase abstracta Estudiante
1. Declarar
a: Entero
b: Entero

179 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

2. Método abstracto calcularMatricula()


// método sin impĺementar
Fin Método calcularMatricula

Fin Clase Estudiante

Clase Alumno
1. Declarar
2. Método calcularMatricula()
c = a*b
Fin Método calcularMatricula

Fin Clase Alumno

B)
Clase abstracta Estudiante
1. Declarar
a: Entero
b: Entero
2. Método abstracto calcularMatricula()
// método sin impĺementar
Fin Método calcularMatricula

Fin Clase Estudiante

Clase Alumno hereda de Estudiante


1. Declarar
2. Método abstracto calcularMatricula()
c = a*b
Fin Método calcularMatricula
Fin Clase Alumno

180 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

C)
Clase abstracta Estudiante
1. Declarar
a: Entero
b: Entero

2. Método abstracto calcularMatricula()


// método sin impĺementar
Fin Método calcularMatricula

Fin Clase Estudiante

Clase Alumno hereda de Estudiante


1. Declarar
2. Método calcularMatricula()
c = a*b
Fin Método calcularMatricula
Fin Clase Alumno

a. A
b. B
c. C

7. ¿Cuál es la finalidad de la implementación del polimorfismo?

a. El polimorfismo se usa con la finalidad de crear métodos de


comportamiento estáticos que se implementan de forma apropiada de
acuerdo a las características que lo requiere la clase involucrada.
b. El polimorfismo se usa con la finalidad de crear métodos de
comportamiento dinámico que se implementan de forma apropiada de
acuerdo a las características que lo requiere la clase involucrada.
c. El polimorfismo se usa con la finalidad de crear métodos de
comportamiento dinámico que se implementan solo en las llamadas
superclases.

181 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

8. En la siguiente miniespecificación existe un error, se solicita


identificarlo.

Clase abstracta Estudiante


1. Declarar
a: Entero
b: Entero
2. Método abstracto calcularMatricula()
// método sin impĺementar
Fin Método calcularMatricula

Fin Clase Estudiante

Clase EjecutaEstudiante
1. Declarar
2. Método principal()
Estudiante e = new Estudiante()
Fin Método principal
Fin Clase Alumno

a. En la clase abstracta Estudiante están mal declarados los datos o


atributos.
b. La clase EjecutaEstudiante debe heredar de la clase Estudiante.
c. En el método principal de la clase EjectutaEstudiante, se está creando
un objeto de una clase abstracta.

182 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

9. En base a los siguientes diagramas de clases, determine cuál es el


correcto con relación a los conceptos de polimorfismo estudiados.

a. Opción A
b. Opción B
c. Opción C

183 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

10. Dada la siguiente miniespecificación, donde se declara una clase abstracta.

Clase abstracta Estudiante


1. Declarar
a: Entero
b: Entero
c: Entero
2. Método abstracto promedio()
// método sin impĺementar
Fin Método calcularMatricula

Fin Clase Estudiante

Determine, ¿Cuál de las siguientes clases, se puede considerar como una


clase derivada o subclase de la superclase Estudiante?

A)
Clase Estudiante1 hereda de Estudiante
1. Declarar
2. Método promedio()
c=a*b
Fin Método promedio
Fin Clase Estudiante1

B)
Clase Estudiante1
1. Declarar
2. Método promedio()
c=a*b
Fin Método promedio
Fin Clase Estudiante1

184 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Segundo bimestre

C)
Clase Estudiante1 hereda de Estudiante
1. Declarar
2. Método promedio_estudiante()
c=a*b
Fin Método promedio
Fin Clase Estudiante1

a. A
b. B
c. C

Hemos concluido con éxito el estudio de nuestra sexta unidad y


con ello la guía didáctica.

De igual manera es el momento de prepararnos para la evaluación


presencial del segundo bimestre.

A partir de ahora usted está preparado para continuar con las


nuevas actividades académicas necesarias para lograr su
formación profesional.

185 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos

7. Solucionario

Autoevaluación 1
Pregunta Respuesta Retroalimentación
1. b Para solucionar problemáticas a través del paradigma de
Orientación a Objetos, se debe representar la solución
como una interacción de objetos, que permiten realizar
entrada de datos, procesamiento de información y salida
de datos para una solución propuesta. Por lo tanto, la
opción correcta es la b.
2. b En la sección 8.1.1 del texto básico, se menciona que un
objeto es todo lo que involucra el dominio del problema
planteado; es decir, son entidades o sujetos. Por lo tanto,
la opción correcta es la b.
3. a En el punto 1.2.1 de la guía, se menciona que en el
paradigma de orientación a objetos se estable que los
objetos están formados por elementos (datos y métodos).
Por lo tanto, la opción correcta es la a.
4. b En el punto 1.2.1 de la guía, se manifiesta que en
otros paradigmas de programación los métodos tienen
otras denominaciones como: procedimientos, módulos,
funciones, subrutinas, entre otros. Por lo tanto, la opción
correcta es la b.
5. b Para representar un objeto en diagrama, se usa un
rectángulo, en la parte superior se ubica el nombre de
objeto subrayado y en la parte media, se ubica el conjunto
de datos o atributos. Por lo tanto, la opción correcta es la
b.

186 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 1
Pregunta Respuesta Retroalimentación
6. a El enunciado solicita la representación de una
colección de objetos con los atributos (datos): nombres,
apellidos, identificación y número de créditos. La
opción A, representa dos objetos (objetoEstudiante1 y
objetoEstudiante2) y los mismos contienen información
para todos los datos solicitados por el enunciado.
La opción B y C, no cumplen con los requerimientos
solicitados (falta de datos). Por lo tanto, la opción correcta
es la a.
7. a En la sección 1.2.2 de la guía se indica que las clases se
caracterizan por tener los mismos datos y métodos. Por lo
tanto, la opción correcta es la a.
8. a La representación a través de un diagrama, de una
instancia y sus objetos se lo realiza haciendo uso de una
línea intercortada que denote la relación “es una instancia
de”. La opción A, representa correctamente una clase
llamada Estudiante y tres objetos (objetoEstudiante1,
objetoEstudiante2, objetoEstudiante3) que se comunican
con la clase Estudiante, mediante una línea intercortada.
Por lo tanto, la opción correcta es la a.
9. b En la opción B, existe representada una clase que tiene
las siguientes características: dos atributos, un atributo
privado ( – dato1) y un atributo protegido (# dato2); tres
métodos, un método público (+ metodo1()), dos métodos
protegidos (# metodo2(), # método3()). Por lo tanto,
cumple con lo requerido por el enunciado. La respuesta
correcta es la b.
10. b En la sección 1.5 se manifiesta lo siguiente: la arquitectura
modelo-vista-controlador se usa en el desarrollo de
soluciones bajo el paradigma de programación orientado a
objetos. Por lo tanto, la opción correcta es la b.

187 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 2
Pregunta Respuesta Retroalimentación
1. a En la sección 2.1 de la guía, se indica que la forma para
iniciar un miniespecificación es a través de:
Algoritmo NOMBRE_DEL_ALGORITMO
Por lo tanto, la opción correcta es la a.
2. a En el punto 2.1 de la guía, se indica que la característica
de los métodos establecer (set) es la de colocar el valor
que se desea asignar al dato (atributo o variable). Por lo
tanto, la opción correcta es la a.
3. a En el punto 2.1 de la guía, se indica que la característica
de los métodos obtener (get) es poder acceder a un valor
de un dato (variable). Por lo tanto, la opción correcta es la
a.
4. b En el punto 2.1 de la guía, se indica que la forma de
declarar e inicializar un objeto de una clase es la siguiente:
ClaseDemostrativa objeto = new ClaseDemostrativa()
Por lo tanto, la opción correcta es la b.
5. a En base a la clase declarada, se puede manifestar:
La opción A, declara e inicializa de manera correcta la
clase Trabajador; y a través del objeto creado t, llama al
método establecerSueldo de manera correcta, pues le
está enviando un parámetro tipo real, como lo requiere el
método declarado en la clase Trabajador.
La opción B, no inicializa de manera correcta la clase
Trabajador, falta la palabra reservada new.
La opción C, declara e inicializa de manera correcta la
clase Trabajador; y a través del objeto creado t, llama al
método obtenerSueldo de manera incorrecta, pues le está
enviando un parámetro tipo real, pero el método declarado
en la clase Trabajador, no recibe ningún parámetro.
Por lo tanto, la opción que no genera errores es la a.
6. b En la sección 2.2 de la guía se manifiesta que todas las
clases tienen por defecto un constructor, mismo que es
llamado al momento de crear la instancia del objeto. Por lo
tanto, la opción correcta es la b.

188 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 2
Pregunta Respuesta Retroalimentación
7. a En base a las clases Vehiculo y Ejecuta se imprimirá por
pantalla lo siguiente:
– La sentencia Vehiculo v = new Vehiculo(), crea e
inicializa un objeto v de tipo Vehiculo, al momento de
inicializar se llama al contructor declarado, en el cual se
inicializa la el atributo placa con el valor LBBC-0183. El
paso b del método principal de la clase Ejecuta, se llama
al método obtenerPlaca(), el mismo retorna el valor que
tenga asignado en ese momento la variable placa (para el
caso presentado es LBBC-0183).
– La sentencia v.establecerPlaca(“PBCC-0192”),
llama al método establecerPlaca y le envía un valor, el
método recibe el valor y lo asigna a la variable placa,
reemplazando el valor que haya tenido hasta ese
momento. El paso d del método principal de la clase
Ejecuta, se llama al método obtenerPlaca(), el mismo
retorna el valor que tenga asignado en ese momento la
variable placa (para el caso presentado es PBCC-0192).
Por lo tanto, la opción correcta es la a.
8. c La clase Vehiculo, posee dos contructores:
– Un constructor que no recibe paramétros, Método
Vehiculo()
– Un constructor que recibe un parámetro tipo cadena.
Método Vehiculo(pl: Cadena)
En base a lo anterior y tomando en consideración
que en la opción C, se llama un constructor enviando
dos parámetros tipo cadena Vehiculo v = new
Vehiculo(“ADEA-1234”, “TGBA-4321”), se puede inferir que
sucederá un error, ya que no existe un constructor en la
clase Vehiculo que requiera dos parámetros tipo cadena.
Por lo tanto, la opción correcta es la c.

189 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 2
Pregunta Respuesta Retroalimentación
9. a En la clase Ejecuta en el paso b, se solicita un valor
para la variable opción, si el valor de opción es 1, se
declara e inicializa un objeto tipo Vehículo haciendo uso
del constructor que recibe un parámetro. Por lo tanto, la
opción correcta es la a.
10. a En la sección 2.2 de la guía, se manifiesta que en la
declaración del método constructor de una clase se usa el
mismo nombre de la clase seguido de un paréntesis (). Por
lo tanto, la opción correcta es la a.

190 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 3
Pregunta Respuesta Retroalimentación
1. c La opción C permite ejecutar un proceso repetitivo en 5
oportunidades, desde contador = 1 hasta que contador sea
<= a 5, y en cada iteración realiza:
• Crea e inicializa un objeto llamado d de tipo Docente.
• Solicita ingresar un valor para la variable e.
• Se usa el método establecerEdad enviando como
parámetro el valor previamente ingresado en la variable
e.
Por lo tanto, la respuesta correcta es la c.
2. b En base a las clases Docente y Ejecutar, se puede afirmar
que a través del ciclo do-while se puede crear al menos
un objeto tipo Docente; pues en la primera iteración del
ciclo repetitivo la variable contador se incrementa en 1,
quedando la comparación de final de ciclo 2 < 1, al ser
falsa la comparación, el ciclo repetitivo termina.
3. c • La opción A tiene un ciclo repetitivo for de la siguiente
manera: for i=5; i<5;i++; en el mismo se puede
apreciar que no permitirá iterar en ninguna oportunidad,
pues el contador i tiene un valor de 5 y la comparación
i<5 sería falsa.
• La opción B tiene un ciclo repetitivo while de la siguiente
manera: while contador <5; en el mismo se puede
apreciar que no permitirá iterar en ninguna oportunidad,
pues la variable contador tiene un valor de 5 (contador
= 5) y la comparación contador<5 sería falsa.
• La opción C tiene un ciclo repetitivo do-while de la
siguiente manera (comparación al final del ciclo):
while contador <5; en el mismo se puede apreciar
que se permitirá iterar varias veces, pues la variable
contador tiene un valor inicial de 1 (contador = 1) y la
comparación contador<5 sería verdadera, hasta que el
contador vaya incrementando de 1 en 1 (en base a la
sentencia contador = contador + 1) y alcance el valor
de 5.
Por lo tanto, la opción correcta es la c.

191 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 3
Pregunta Respuesta Retroalimentación
4. b • La opción A permite iterar en 5 oportunidades, en cada
iteración permite crear e inicializar un objeto llamado
d, de tipo Trabajador; luego solicita el ingreso de un
valor para la variable e; posteriormente, a través del
objeto d llama al método obtenerSueldo y le envía como
parámetro la variable e; esto genera un error debido
a que el método obtenerSueldo, no recibe ningún
parámetro.
• La opción B permite iterar en 5 oportunidades, en cada
iteración permite crear e inicializar un objeto llamado d,
de tipo Trabajador; luego solicita el ingreso de un valor
para la variable e; posteriormente, a través del objeto
d llama al método establecerSueldo y le envía como
parámetro la variable e; a su vez el método recibe el
parámetro y asigna el mismo al atributo sueldo de la
clase Trabajador.
• La opción C permite iterar en 5 oportunidades, en
cada iteración solo permite crear e inicializar un objeto
llamado d, de tipo Trabajador.
Por lo tanto, la opción correcta es la b.
5. c En base a las sentencias: while contador <=3 y while
contador <3, la miniespecificación permitirá crear tres
objetos de tipo Trabajador, si el valor ingresado para la
variable opción es igual a 1; en caso de ingresar un valor
diferente de 1 para la variable opción, se generará un
proceso que permite crear dos objetos de tipo Trabajador.

192 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 4
Pregunta Respuesta Retroalimentación
1. a En la sección 4.1 de la guía, se manifiesta que en la
declaración de atributos o datos de tipo arreglo se usa la
palabra reservada Arreglo, el tamaño del arreglo entre [] y
el tipo de dato a usar para el arreglo.
Por lo tanto, la opción correcta es la a.
2. c En la sección 4.1 de la guía, se manifiesta que en la
declaración de atributos o datos de tipo arreglo se usa la
palabra reservada Arreglo, el tamaño del arreglo entre [] y
el tipo de dato a usar para el arreglo.
Por lo tanto, la opción correcta es la a.
3. a La opción correcta que permite generar un método
establecer y un método obtener para el atributo promedios
de la clase Clase, es la a; pues en dicha opción el método
establecerPromedios recibe un parámetro tipo arreglo
de enteros y lo asigna a una variable llamada promedios
(dicha variable está declarada así: <<Arreglo>>[12]
Entero); además el método obtenerPromedios, retorna el
valor que tendría asignado en un determinado instante el
atributo promedios.
4. a La opción correcta es la a, pues en dicha opción se genera
un método que permite acumular en una variable suma,
cada uno de los valores que tenga el atributo tipo arreglo
llamado valores (se hace uso de un ciclo repetitivo, for
i = 0; i<3; i++), a través de la sentencia suma = suma +
valores[i]
5. a El método establecerValores recibe como parámetro un
arreglo de datos de tipo Docente: establecerValores(lista
Valores[]: <<Arreglo>> Docente).
La opción correcta es la a, pues al hacer uso del método
establecerValores, envía una variable llamada lista_
valores, que es un arreglo de tipo Docente.

193 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 5
Pregunta Respuesta Retroalimentación
1. c En la sección 5.1.1 de la guía se menciona que la herencia
permite asociar en una sola clase (superclase) el conjunto
de datos o atributos y métodos que sean compartidos por
un conjunto de clases específicas (subclases). Por lo tanto,
la opción correcta es la c.
2. b La relación entre las subclases y superclases se
representa con las siguientes frases:
• Una subclase “es un” o “es una” superclase
• Una subclase “se deriva de” superclase
Por lo tanto, la opción correcta es la b.
3. b De acuerdo a la sección 5.3, para indicar que una clase
hereda o se deriva de una clase se usa la forma: Clase
Secundaria hereda de Principal.
Por lo tanto, la opción correcta es la b.
4. c La visisibilidad de los atributos de la superclase debe ser
protegidos, lo que permite la manipulación de los mismos
por parte de la subclase.
Por lo tanto, la opción correcra es la c.
5. b Si la lógica requiere que la subclase Secundaria tenga
sus propios atributos o métodos se los puede declarar e
implementar sin problema.
Por lo tanto, la opción correcta es la b.
6. a La opción A tiene un error de implementación. El método
establecerNombresEstudiante de la clase Estudiante
recibe como parámetro un valor de tipo Cadena y en
la línea e.establecerNombresEstudiante(valor) de la
clase Ejecutar, se utiliza la variable valor que ha sido
declarada previamente como entera; generando el
error.
Por lo tanto, la opción correcta es la a.

194 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 5
Pregunta Respuesta Retroalimentación
7. c • En la opción A se hace uso de un método que
no pertenece a la clase EstudiantePresencial
(e.establecerNumeroAsginaturas)
• En la opción B se utiliza un método que no
pertenece a la clase EstudianteDistancia
(e.establecerNumeroCreditos).
• En la opción C se utiliza un método que si pertenece a
la clase EstudianteDistancia (a través del concepto de
herencia – e.establecerNumeroCreditos).
Por lo tanto, la opción correcta es la c.
8. c • En el diagrama de la opción A se está referenciando
a dos métodos fuera del alcance en la clase Principal
(establecerAtributo3 y obtenerAtributo3).
• En el diagrama de la opción B, no se usa la relación de
herencia conforme la miniespecificación.
• En el diagrama de la opción C, se cumple con los
indicado en la miniespecificación.
Por lo tanto, la opción correcta es la c.
9. b • En la opción A se utiliza los métodos agregar y obtener
de la clase Secundaria, sin crear o inicializar un objeto
de tipo Secundaria.
• En la opción B se hace uso de los métodos agregar y
obtener de la clase Secundaria y además se crear e
inicializar un objeto de tipo Secundaria.
• En la opción C se utiliza los métodos obtener de la
clase Secundaria (no se usa los métodos agregar)
y además se crear e inicializa un objeto de tipo
Secundaria.
Por lo tanto, la opción correcta es la b.

195 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 5
Pregunta Respuesta Retroalimentación
10. b • La opción que no genera error, es la ocpión B, por lo
tanto, es la correcta.
• La opción A, está usando los métodos
establecerAtributo4 y obtenerAtributo4 que no
pertenecen a la clase Secundaria.
• La opción C, está usando los métodos
establecerAtributo3 y obtenerAtributo3 que no
pertenecen a la clase Secundaria2.

196 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 6
Pregunta Respuesta Retroalimentación
1. a En relación a lo indicado en la sección 6.2, la
representación de una clase abstracta en diagrama de
clases tiene como característica anteponer <<abstracta>>
en el nombre de la clase.
Por lo tanto, la opción correcta es la a.
2. b En relación a la sección 6.1.1 de la guía, se indica que las
superclases abstractas son entidades (clases) que tienen
al menos un método abstracto que permiten implementar
el polimorfismo en las subclases.
Por lo tanto, la respuesta correcta es la b.
3. a De acuerdo a lo revisado en el apartado 6.2, la forma de
representar un método abstracta en un diagrama de clases
es: +<<*>> metodo_abstracto().
Por lo tanto, la opción correcta es la a.
4. a Una clase abstracta se caracteriza por tener:
• En su encabezado la palabra reservada abstracta
(Clase abstracta Estudiante).
• Poseer un método abstracto sin implementación
(Método abstracto calcularMatricula() // método sin
impĺementar).
La opción que cumple con esos requisitos es la opción a.
5. c En una superclase abstracta, se usa el símbolo # (en cada
atributo) que indica una visibilidad protegida (protected)
para permitir el uso y manipulación por parte de las
subclases.
Por lo tanto, la opción correcta es la c.

197 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos
Solucionario

Autoevaluación 6
Pregunta Respuesta Retroalimentación
6. c La opción correcta es la c, debido a que hace uso de los
requisitos necesarios para representar una relación entre
una superclase abstracta y una subclase.
• La clase abstracta Estudiante, está bien estructurada.
• La clase Alumno, en su encabezado utiliza la palabra
reservada “hereda”, para indicar que es subclase de la
superclase Estudiante.
• La clase Alumno, implementa el método abstracto
de su superclase abstracta Estudiante (Método
calcularMatricula()), importante mencionar que no se
debe incluir la palabra abstracto en la implementación
del método en la subclase.
7. b En base al punto 6.1. de la guía, que se refiere al concepto
de polimorfismo; la opción correcta es la b.
8. c En la sección 6.1.1 se manifiesta que las clases abstractas
no se pueden instanciar, solo permiten derivar subclases.
Por lo tanto, la opción de respuesta correcta es la c.
9. a La representación de la relación entre las subclases y
superclase abstracta se realiza con una línea que en
uno de sus lados termina en flecha. La fecha parte de la
subclase y apunta a la superclase abstracta.
Por lo tanto, la respuesta correcta es la a.
10. a La opción correcta es la a, debido a que utiliza los
requisitos necesarios para representar la clase Estudiante1
como una subclase de la superclase Estudiante.
• La clase Estudiante1, en su encabezado hace uso
de la palabra reservada “hereda”, para indicar que es
subclase de la superclase Estudiante.
• La clase Estudiante1, implementa el método abstracto
de su superclase abstracta Estudiante (Método
promedio()), importante mencionar que no se debe
incluir la palabra abstracto en la implementación del
método en la subclase.

198 Modalidad Abierta y a Distancia


Guía didáctica: Programación orientada a objetos

8. Referencias bibliográficas

Cadenhead, R. (2014). Java 8. Madrid: Anaya Multimedia.

Darwin, I. (2014). Java cookbook. Sebastopol, California: O’Reilly.

Guardati, S. (2016). Estructuras de datos básicas : programación orientada a


objetos con Java. México D.F.Barcelona: Alfaomega Marcombo.

Phillips, D. (2015). Python 3 object-oriented programming. Birmingham: Packt


Publishing.

199 Modalidad Abierta y a Distancia


www.utpl.edu.ec

ÁREA
sociohumanística

También podría gustarte