Guia didáctica unidad 4 metodología para el análisis y planteamiento del problema
1. Metodología para el Análisis y Planteamiento del Problema
Objetivos de Aprendizaje
Al finalizar esta unidad, usted será capaz de:
1. Resolver problemas lógicos–matemáticos a través de la Metodología para el
Análisis y Planteamientos de problemas
2. Comprender la Metodología Orientada a Objeto para la construcción de
modelos computacionales
Contenidos
1. Metodología para el Análisis y Planteamientos de problemas:
1.1.Identificación del Problema.
1.2.Identificación de los datos necesarios (entradas).
1.3.Identificación de los datos a obtener (salidas).
1.4.Descripción de las operaciones a utilizar (cálculos).
1.5.Descripción de los pasos para llegar a la solución (procesos).
2. Fundamentos generales de la Orientación a Objetos como paradigma de
programación:
2.1.Definición y Ventajas.
2.2.Características.
2.3.Elementos: Clase, Objeto, Atributo, Método.
2.4.Propiedades: Abstracción, Encapsulamiento, Modularidad
3. Metodología Orientada a Objeto para la construcción de modelos
computacionales:
3.1.Análisis: Identificación de clase, atributos y métodos.
UNIDAD 4
2. 3.2. Diseño: Representación gráfica de las clases.
3.3. Implementación: Construcción de modelos computacionales empleando
algoritmos.
Fuentes de Información
Textos:
Coto, E. (2002). Lenguaje Pseudoformal Para la Construcción de Algoritmos.
Universidad Central de Venezuela. Facultad de Ciencias. Escuela de
Computación.
Disponible:http://lcg.ciens.ucv.ve/~ernesto/nds/CotoND200208.pdf
Izquierdo, L. Introducción a la Programación Orientada a Objetos. . [Documento en
Línea]. Disponible: http://luis.izqui.org/resources/ProgOrientadaObjetos.pdf
Joyanes, L. (2003). Fundamentos de Programación. Algoritmos, estructuras de
datos y objetos. Mc Graw Hill. 3da Edición.
Joyanes, L. (2003). PROGRAMACIÓN EN C++. Algoritmos, estructuras de datos
y objetos. Luis Mc Graw Hill. 2da Edición.
Oviedo, E. Lógica de Programación.
Sitios Web recomendados:
http://www.ciens.ucv.ve/algoritmosyprogramacion/index.html
http://www.rena.edu.ve/cuartaEtapa/Informatica/Tema12.html
https://sites.google.com/site/algoritmicapnfiuptaeb/
Conocimientos Previos
Cuando se desarrolla un algoritmo, los pasos a cumplir para dar solución a
un problema determinado deben tener coherencia y concatenación.
Con el propósito de que tengas éxito en el aprendizaje de estos temas, es
necesario que repases el contenido de la unidad 1, con respecto al concepto y
características de los algoritmos, y la unidad 3 sobre los datos y las entidades
primitivas, además de evaluar una expresión aritmética, ejercicios de desarrollo
3. de lógica. Se le recomienda hacer una revisión profunda, ya que de esto depende
la comprensión de esta unidad.
1. METODOLOGIA PARA EL ANALISIS Y PLANTEAMINETO DE PROBLEMAS
Introducción
El Análisis del problema es un paso fundamental en la correcta resolución de
una situación presentada, la cual viene determinada, en gran medida, por el
planteamiento inicial. Un planteamiento correcto evita perder tiempo en la
implementación de algoritmos. En este paso debemos hacer tres preguntas:
(a) ¿Qué entradas se nos ofrece?, (b) ¿Qué salida debemos generar?, (c) ¿Cuál
es el método que debemos usar para llegar hacia la solución deseada?, es así
como el diseño del algoritmo ayuda a darle la solución al problema.
Parte del reto de la programación, es que cada programador tiene
estrategias diferentes para proyectar las ciertas preguntas, sin importar el enfoque
de desarrollo del programa que utilice. Pero ¿Cómo dan solución a estos
problemas? ¿Qué método utilizan?, ¿En qué te ayudaría conocer? ¿Cómo
resolver problemas mediante una metodología? Para resolver estas interrogantes
necesariamente tienes que seguir un proceso al cual se conoce como metodología
de solución de problemas.
La metodología de solución de problemas es un conjunto o sistema de
métodos, principios y reglas que permiten enfrentar de manera sistemática el
desarrollo de una solución a un problema.
Esta metodología se estructura como una secuencia de pasos que parten de la
definición del problema y culminan con una solución del mismo.
1.1. IDENTIFICACIÓN DEL PROBLEMA
Es la primera fase de la metodología de solución de problemas. Esta etapa
se centra en la elaboración del texto que nos permitirá saber qué es lo que se
pretende solucionar, y nos proporcionará información útil para hallar la solución.
4. Esta fase está dada por el enunciado del problema, el cual debe ser claro y
completo. Es importante que conozcamos exactamente qué se desea, ya que
mientras no identifiquemos lo que se solucionará no tiene caso pasar a la
siguiente fase. Esto se logrará mediante una buena lectura del enunciado y el
análisis del mismo para poder identificar cada uno de los elementos (condiciones)
que afectan y/o crean el problema.
Veamos un ejemplo sencillo, en donde apliquemos la primera fase de la
metodología de solución de problemas. Ejemplo: Nuestro personaje está sentado
en su casa viendo la televisión. Afuera está lloviendo y como su techo está en mal
estado el agua se introduce a la habitación.
¿Cuál es su problema?
El problema es que la televisión no se ve bien.
El problema es que el sillón no es cómodo.
El problema es que las gotas hacen ruido.
El problema es que se está metiendo el agua a su casa.
Un análisis profundo de la situación (y un poco de sentido común) podemos
determinar que en realidad el problema consiste en que se está metiendo el
agua a la casa: nuestro personaje tiene una gotera, pero no quiera la gotera.
1.2. IDENTIFICACIÓN DE LOS DATOS NECESARIOS (ENTRADAS)
Luego de determinar el problema, se debe reconocer los datos que nos
hacen falta y con base en éstos se puede determinar la solución. Debemos dejar
claro cuál es la información útil que se nos proporciona en el enunciado del
problema y que nos ayudará en la solución del mismo. Aquí también se tiene
disponible toda la información (teoría) que se conoce en relación al problema. En
el caso de nuestro ejemplo sería:
Datos de entrada de entrada: Se está metiendo el agua a la casa del personaje
Datos adicionales: Reemplazar o reparar el techo cuando presentan filtración
5. 1.3. IDENTIFICACIÓN DE LOS DATOS A OBTENER (SALIDAS)
Se consideran los datos o resultados que se espera obtener. (Información a
mostrar). Siguiendo con nuestro ejemplo, los datos de salida: El techo del
personaje está en mal estado
1.4. DESCRIPCIÓN DE LAS OPERACIONES A UTILIZAR (CÁLCULOS)
Dentro de este método de análisis y planteamiento del problema, se llega a
obtener una estructura clara y eficaz por medio de una serie de pasos para
alcanzar la solución del problema, esto también cuenta con operaciones dentro de
los algoritmos que podemos llamar cálculos. Estos cálculos están íntimamente
conectados con el tipo de dato de entrada que se espera recibir y la salida que
nos interesa obtener, todo previamente planificado según el caso, se formulan
operaciones precisas ya sean lógicas o aritméticas representadas como
instrucciones a seguir.
1.5. DESCRIPCIÓN DE LOS PASOS PARA LLEGAR A LA SOLUCIÓN
(PROCESOS)
Se define como proceso una serie de expresiones matemáticas y lógicas
que nos permitirán obtener los datos de salida. En algunas ocasiones un mismo
problema podrá ser resuelto de varias formas, por lo tanto tendrá varios procesos
de solución.
Resumen
Entendido el problema, para resolverlo es preciso analizar los datos o
resultados que se esperan, los datos de entrada que nos suministran, el proceso
al que se requiere someter esos datos a fin de obtener los resultados esperados,
áreas de trabajo, fórmulas y otros recursos necesarios.
Se puede establecer una serie de preguntas acerca de lo que establece el
problema, para poder determinar si se cuenta con los elementos suficientes para
6. llevar a cabo la solución del mismo. Para la solución de problemas, algunas
preguntas son como:
1. ¿Con qué datos cuento? Es importante conocer si los datos que se tienen son
suficientes para dar solución al problema.
2. ¿Qué hago con esos datos? Una vez que tenemos todos los datos que
necesitamos, debemos determinar qué hacer con ellos, es decir, qué fórmulas,
cálculos, qué proceso o transformación deben seguir los datos para convertirse en
resultados.
3. ¿Qué se espera obtener? ¿Qué información deseamos obtener con el proceso
de datos y de qué forma presentarla? En caso de que la información obtenida no
sea la deseada, replantear nuevamente un análisis en los puntos anteriores.
2. FUNDAMENTOS GENERALES DE LA ORIENTACIÓN A OBJETOS COMO
PARADIGMA DE PROGRAMACIÓN
Introducción
La evolución de la programación puede sintetizarse en tres modelos o
paradigmas: (a) La programación mediante procedimientos, (b) La programación
estructurada, (c) La programación orientada a objetos.
Un paradigma es una forma establecida de pensar acerca de cómo hacer
algo. Es un conjunto de teorías, estándares y métodos que juntos representan un
medio de organización del conocimiento: es decir, un medio de visualizar el
mundo.
La abstracción es la capacidad mental superior que tiene todo ser humano
para poder deducir la esencia de un concepto o situación determinada. Definir
una abstracción significa describir una entidad del mundo real, no importa lo
compleja que pueda ser.
7. El Principito. (Antoine de Saint – Exupéry)
La relación entre abstracción y lenguaje de programación es doble: por un
lado se utiliza el lenguaje de programación para escribir un programa que es una
abstracción del mundo real; por otro lado se utiliza el lenguaje de programación
para describir de un modo abstracto el comportamiento físico de la computadora
que se está utilizando.
Programación Orientada a procedimientos: El mundo en que vivimos se halla
plagado de objetos: aviones, trenes, automóviles, teléfonos, libros, computadoras,
etcétera. Sin embargo, en este modelo las técnicas de programación utilizadas no
reflejaban esto. Lo procedural [procedimientos] fue el paradigma principal de la
programación, el cual define un programa como un algoritmo escrito en algún
lenguaje de programación.
Programación Estructurada: Las actividades de investigación en la década de
los sesenta dieron como resultado la evolución de la programación mediante
procedimientos a la programación estructurada, que es un método disciplinado
para escribir programas que fuesen más claros, fáciles de probar y corregir y más
fáciles de modificar que los no estructurados.
Le mostré mi obra de arte a las personas
mayores y les pregunté si mi dibujo las
asustaba.
Me respondieron:” ¿Por qué tendríamos
que tenerle miedo a un sombrero?”
Mi dibujo N° 1
Mi dibujo no representaba un sombrero.
Representaba una serpiente boa que
digería un elefante. Entonces dibujé el
interior de la serpiente boa para que las
personas mayores pudieran entender.
Mi dibujo N° 2
8. Estas mejoras de la programación mediante procedimientos condujeron a
nuevos conceptos como son: Estructuras de control, funciones y módulos. Las
tres formas de estructuras de control son: Secuencia, Selección y Repetición. Las
funciones permiten realizar tareas que se ejecutan repetidamente, o son
ejecutadas con ligeras variaciones, y que se reúnen en una entidad y se
reutilizan, en lugar de duplicar el código varias veces. Los módulos se refiere al
proceso de dividir un objeto en piezas más pequeñas, o módulos, con el fin de
lograr más fácilmente el objetivo (divide y vencerás).
Programación Orientada a Objeto: (POO u OOP según sus siglas en inglés) es
un paradigma de programación que usa los objetos y sus interacciones para
diseñar aplicaciones y programas de computadora. Facilita la creación de software
de calidad ya que potencia el mantenimiento, la extensión y la reutilización del
software generado bajo este paradigma.
2.1. DEFINICIÓN Y VENTAJAS
La programación orientada a objetos es una “filosofía”, un modelo de
programación, con su teoría y su metodología, es otra forma de descomponer
problemas, es la descomposición en objetos; vamos a fijarnos no en lo que hay
que hacer en el problema, sino en cuál es el escenario real del mismo, y vamos a
intentar simular ese escenario en nuestro programa.
La Programación Orientada a Objetos (POO) es una forma especial de
programar, más cercana a como expresaríamos las cosas en la vida real. Se basa
en la idea natural de la existencia de un mundo lleno de objetos, de modo que la
resolución del problema se realiza en términos de objetos.
Las ventajas más importantes de la programación orientada a objetos:
Reusabilidad: Cuando hemos diseñado adecuadamente las clases, se pueden
usar en distintas partes del programa y en numerosos proyectos.
Mantenibilidad: Debido a la sencillez para abstraer el problema, los programas
orientados a objetos son más sencillos de leer y comprender, pues nos permiten
9. ocultar detalles de implementación dejando visibles sólo aquellos detalles más
relevantes.
Modificabilidad: La facilidad de añadir, suprimir o modificar nuevos objetos nos
permite hacer modificaciones de una forma muy sencilla.
Fiabilidad: Al dividir el problema en partes más pequeñas podemos probarlas
de manera independiente y aislar mucho más fácilmente los posibles errores que
puedan surgir.
2.2. CARACTERÍSTICAS
La POO se basa en la idea natural de la existencia de un mundo lleno de
Objetos, de modo que la resolución del problema se realiza en términos de
objetos. Estos objetos poseen características (atributos) y tiene un
comportamiento (métodos).
En el ámbito de la programación, un programa orientado a objetos está
constituido por un conjunto de objetos interactuando conjuntamente a través del
paso de mensajes, los cuales permiten hacer la entrada de datos, los cálculos
necesarios para resolver el problema y dar la salida de datos, convertidos en la
información solicitada.
2.3. ELEMENTOS
La programación orientada a objetos introduce nuevos conceptos
OBJETOS
En el mundo real, las personas identifican los objetos como las cosas que
pueden ser percibidas por los cinco sentidos. Por ejemplo: una computadora, un
teléfono celular, un árbol, un perro o un automóvil.
Los objetos son entidades provistas de un conjunto de propiedades,
atributos o características específicas o datos, tales como tamaño, color, forma,
textura… y también tienen ciertos comportamientos, funcionalidad o métodos que
los hacen diferentes a otros objetos. Por ejemplo: los automóviles tienen
10. características o atributos (marca, modelo, año, color, capacidad, placa, volante,
acelerador, frenos, switchera, palanca de cambios) y comportamiento (encender,
arrancar, acelerar, retroceder, cruzar izquierda, cruzar derecha, detenerse).
Se corresponde con los objetos reales del mundo que nos rodea, a objetos
internos del sistema o del programa. Un objeto tiene estado, exhibe algún
comportamiento bien definido, tiene una identidad única.
Un objeto tiene estado, los atributos del objeto expresados por las variables,
se refiere al conjunto de los valores de sus atributos en un momento dado. El
comportamiento de un objeto puede modificar el estado de este.
Un Objeto exhibe algún comportamiento bien definido, lo que el objeto
puede hacer, los métodos que componen el objeto respectivamente determinado
por las operaciones que éste puede realizar en respuesta a mensajes
(peticiones), que le son enviados por otros objetos.
Un objeto posee Identidad, que es la propiedad que permite a un objeto
diferenciarse de otros. Cada objeto es único en el mundo por más que haya otro
objeto con iguales atributos.
Un objeto en POO, representa alguna entidad de la vida real, es decir,
alguno de los objetos que pertenecen al negocio con que estamos trabajando o
al problema con el que nos estamos enfrentando.
11. CLASE
Una clase representa un conjunto de objetos que comparten una estructura
común y un comportamiento común, En otras palabras, una clase representa a un
conjunto de objetos que tienen en común las mismas características (atributos) y
el mismo comportamiento (métodos).
En el mundo real existen objetos del mismo tipo, por ejemplo tu cuenta de
ahorro en un banco, es solo una más de todas las cuentas de ahorro del banco.
Todas las cuentas de ahorro tienen los atributos: número, titular, fecha apertura,
saldo y algunos métodos como son: Aperturar, Depositar, Retirar y Cerrar. Por lo
tanto, se puede definir la clase “Cuenta_Ahorro”, que describe los atributos y
comportamiento de todas las cuentas.
Al referirse a una cuenta en particular, por ejemplo, tu cuenta de ahorro, se
puede decir que ella es un objeto de la clase “Cuenta_Ahorro”.
Las clases son modelos o plantillas que describen como se construyen uno
o más objetos del mismo tipo, es decir, define las variables y los métodos que son
comunes para todos los objetos de un cierto tipo. Cada vez que se construye un
objeto de una clase, se crea una instancia de esa clase, por lo tanto, una clase
puede tener muchas instancias y cada una es un objeto diferente.
Un objeto es un simple elemento. Una clase, por el contrario, describe una
familia de elementos similares. Cuando programamos un objeto y definimos sus
12. características y funcionalidades, en realidad lo que se está haciendo, es
programando una clase.
EJEMPLO 1
En el mundo real, normalmente tenemos muchos
objetos del mismo tipo. Por ejemplo, nuestro teléfono celular
es sólo uno de los miles que hay en el mundo. Si hablamos
en términos de la programación orientada a objetos, podemos
decir que nuestro objeto celular es una instancia de una clase
conocida como "celular". Los celulares tienen características
(marca, modelo, sistema operativo, pantalla, teclado) y
comportamientos (hacer y recibir llamadas, enviar mensajes
multimedia, transmisión de datos).
Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de
que los celulares comparten esas características comunes y construyen modelos
o plantillas comunes, para que a partir de esas se puedan crear muchos equipos
celulares del mismo modelo. A ese modelo o plantilla le llamamos CLASE, y a los
equipos que sacamos a partir de ella la llamamos OBJETOS.
Esto mismo se aplica a los objetos de software, se puede tener muchos
objetos del mismo tipo y mismas características.
13. EJEMPLO 2
Definamos una clase para una cuenta bancaria. Una cuenta bancaria consta
de atributos: tipo, titular y saldo. Además permite hacer las siguientes operaciones
o métodos: Depositar y Extraer. Veamos cómo quedaría
Plantilla de la clase: Cuenta Bancaria
MÉTODO
Un método es una función o subrutina asociada a un objeto o a una clase de
objetos cuya ejecución se desencadena tras la recepción de un "mensaje". Desde
el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método
puede producir un cambio en las propiedades del objeto, o la generación de un
"evento" con un nuevo mensaje para otro objeto del Sistema.
Un evento es un suceso en el sistema (tal como una interacción del usuario
con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento
enviando el mensaje adecuado al objeto pertinente. También se puede definir
como evento, a la reacción que puede desencadenar un objeto, es decir la acción
que genera.
La interacción entre objetos se produce mediante mensajes. Un mensaje es
una petición dirigida a un objeto, que le ordena que ejecute uno de sus métodos
con ciertos parámetros asociados al evento que lo generó.
Un mensaje está compuesto por los siguientes elementos: el objeto receptor,
hacia el cual el mensaje es enviado; el nombre del método que el objeto receptor
del mensaje ejecutará; cualquier información adicional requerida por el objeto
14. Denota las características esenciales de
un objeto que lo distinguen de todos los
demás tipos de objetos, y proporciona así
fronteras conceptuales nítidamente
definidas respecto a la perspectiva del
observador.
receptor para ejecutar el método solicitado (parámetros).
ATRIBUTO
Propiedad o, contenedor de un tipo de datos asociados a un objeto (o a una
clase de objetos), que hace los datos visibles desde fuera del objeto y esto se
define como sus características predeterminadas, y cuyo valor puede ser alterado
por la ejecución de algún método.
2.4. PROPIEDADES
ABSTRACCIÓN
Es la técnica que permite reconocer los elementos esenciales para la
solución de un problema dejando al lado los detalles irrelevantes. La
abstracción consiste en captar las características esenciales de un objeto, así
como su comportamiento, al tiempo que se ignoran los detalles no esenciales.
Cada objeto en el sistema sirve como modelo de un "agente" abstracto que
puede realizar trabajos, informar y cambiar su estado, y "comunicarse" con otros
objetos en el sistema sin revelar cómo se implementan estas características.
Los procesos, las funciones o los métodos pueden también ser abstraídos.
Una abstracción es un medio que permite un mejor manejo de la
complejidad del problema, al permitir suprimir o posponer detalles irrelevantes
15. en cierto momento, y concentrarse más bien, en detalles verdaderamente
esenciales. El reconocer similitudes entre diferentes objetos también permite
simplificar el dominio del problema, pues hace posible enunciar
comportamientos o características generales que los describen, sin importar
detalles que podrían no ser importantes.
Una abstracción debe tener límites conceptuales bien definidos que
permitan la independencia funcional entre unas y otras. Así mismo, esos límites
deberán esclarecer la forma en que la abstracción será utilizada para resolver y
modelar el problema en cuestión. Es decir, al abstraer un objeto, debe quedar
claro cuál es su función y su relación con los demás objetos.
Una abstracción puede describir algo que no necesariamente existe en el
dominio real de la aplicación pero que su existencia resultaría tan útil para el
analista que termina siendo representada e incorporada en la solución
computacional del problema.
Nota: Abstracción se asocia con Clase, e intenta definir en qué forma se ve.
Ejemplos de abstracción
1. Aprender a manejar un automóvil implica saber si este es de transmisión
automática o estándar, sin embargo, NO necesitamos conocer como está
construida la transmisión automática o la estándar. Algunos detalles que si
interesan son los relacionados con la palanca y los pedales.
2. Al utilizar una computadora para elaborar un escrito nos interesa saber que la
información la introduciremos por teclado y la visualizamos por pantalla. Es decir,
distinguimos dispositivos de entrada y de salida, pero NO interesan los detalles
de los circuitos eléctricos que conforman a los dispositivos, ni el software (por
ejemplo: controladores y sistema operativo) que les permite realizar su tarea.
3. Cuando se habla de un árbol se piensa en hojas, raíces, clorofila; pero muy
probablemente NO se conozca (ni interese) como el árbol produce sus hojas, la
clorofila y oxígeno.
4. Al servir un café, requerimos un recipiente resistente al calor, fácil de sujetar
16. Es el proceso de almacenar en un
mismo comportamiento, los
elementos de una abstracción y su
implementación.
sin riesgo de quemaduras, que asiente de manera segura para que no se voltee.
Sin embargo, es casi seguro que desconozcamos cual es el material y el proceso
empleado para fabricar dicho recipiente.
5. Cuando estamos ante una araña, probablemente nos interese identificar si es
venenosa, empero, NO necesitaremos saber cómo produce su veneno, en que
cantidades, en qué periodo.
6. Si se tiene la posibilidad de elegir los ingredientes de una hamburguesa,
interesan detalles como si la carne es de soya o de res, el jamón de pavo o
pierna, el queso amarillo o blanco. Sin embargo, no nos ocuparemos de los
detalles de cómo se produce cada uno de estos productos.
ENCAPSULAMIENTO
Es la propiedad que permite agrupar junto en una única unidad de
programación, las características (atributos) y comportamiento (métodos) de un
objeto. En POO, las clases son la unidad de programación que encapsulan
atributos y métodos.
Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstracción. Encapsular
significa agrupar y manejar el grupo resultante como tal, y no cada parte a su
17. vez.
Al decidir encapsular ciertas funciones o atributos, estos serán utilizados por
otros objetos para llevar a cabo alguna tarea. Sin embargo, un objeto debe
conocer de otro lo indispensable para que lo pueda utilizar, ni más ni menos. Si
se conoce más, entonces aumenta la cantidad de información que se maneja lo
que incrementa la complejidad, además de que hace más vulnerable el objeto
que se utiliza, y es más difícil garantizar su integridad y su correcto
funcionamiento. Por otro lado, si se esconden aspectos fundamentales, se estaría
perdiendo el sentido de la abstracción.
Encapsular consiste en ocultar los datos y detalles de los métodos de los objetos
y permitir su acceso a otros objetos sólo a través de los métodos mediante el uso
de mensajes.
Nota: Encapsulamiento se asocia con Objeto, e interesa definir qué deben
ver los demás.
Ejemplos de encapsulamiento
1. Al manejar un automóvil estándar si se presiona el clotch sin cambiar la
palanca de velocidades de posición, el auto no avanzará, independientemente de
si la palanca va al volante o es de piso.
2. El proceso de captura de un escrito a través de teclado registrará la pulsación
de la tecla A independientemente de si el teclado es un componente separado
(PC de escritorio), integrado (Laptop) o táctil (a través de la pantalla).
3. El proceso de producción de frutos en los árboles seguramente difiere
dependiendo del fruto, lo importante es que el fruto se produzca, sin importar si
este crece en las hojas, las ramas o el tronco.
PRINCIPIO DE OCULTACIÓN DE DATOS
Cada objeto está aislado del exterior, y cada tipo de objeto expone una
interfaz a otros objetos que especifica cómo pueden interactuar con los objetos
de la clase. El aislamiento protege a las propiedades de un objeto contra su
18. Es la propiedad que tiene un
sistema que ha sido
descompuesto en un conjunto de
módulos cohesivos y débilmente
acoplados.
modificación por quien no tenga derecho a acceder a ellas; solamente los propios
métodos internos del objeto pueden acceder a su estado. Esto asegura que otros
objetos no pueden cambiar el estado interno de un objeto de maneras
inesperadas, eliminando efectos secundarios e interacciones inesperadas.
Los atributos (datos) de un objeto deben ser privados, es decir, no pueden
ser modificados ni obtenidos por otros objetos, solamente pueden ser
manipulados por los propios métodos internos del objeto.
MODULARIDAD
Un programa crece en forma exponencial con respecto a su tamaño. Si se
tiene un programa grande, su complejidad será mucho mayor que la suma de la
complejidad de varios programas más pequeños que cumplan el mismo objetivo.
Si se pudiera tomar un programa grande y dividirlo en subprogramas según
ciertos criterios, la complejidad resultante sería mucho menor.
Se espera que cada módulo pueda ser desarrollado con cierta
independencia de los demás, y que incluso sea compilado en forma separada.
Con esto se busca lograr una mayor productividad al desarrollar software en gran
escala, en donde los módulos son asignados a las personas que componen el
equipo de trabajo y los desarrollan en forma independiente y paralela. Cada
19. módulo debe estar bien definido, y su acoplamiento con los demás debería ser el
mínimo posible. Entre menos dependencias existan entre ellos, más mantenible
será la aplicación final.
Nota: Modularidad se entiende como agrupación de abstracciones u objetos.
Ejemplos de modularidad
1. En un automóvil estándar reubicar la palanca de velocidades NO debe afectar
el comportamiento de la transmisión.
2. Adaptar un teclado para idioma griego NO debe requerir la construcción de
una computadora nueva.
3. Permitir que un sistema de nómina de empleados de confianza y operarios,
incorpore la funcionalidad de préstamos, NO debe requerir la reescritura del
programacompleto.
POLIMORFISMO
Es una propiedad que permite que diversos objetos respondan de modo
diferente al mismo mensaje. No sera tratado en este curso.
HERENCIA
. Es la propiedad que permite definir nuevas clases a partir de una clase base
ya existente. Las nuevas clases creadas se denominan clases derivadas (clases
hijos o subclases) y heredan los atributos y métodos de la clase base (clase
padre o superclase), además, estas clases derivadas pueden tener otros atributos
y métodos propios, adicionales. No sera tratado en este curso.
Resumen
La clase es un modelo o prototipo que define las variables y métodos
comunes a todos los objetos de cierta clase. También se puede decir que una
clase es una plantilla genérica para un conjunto de objetos de similares
características. Una instancia es un objeto de una clase en particular.
20. Para entender cómo funciona el paradigma de la programación orientada a
objetos es necesario ver al programa como una colección de objetos que
interactúan entre sí enviándose mensajes y cambiando su estado durante la
ejecución.
Resolver un problema bajo el paradigma de la programación orientada a
objetos implica determinar y caracterizar los diferentes objetos que intervienen en
el problema, definir sus propiedades y métodos y ponerlos a interactuar.
3. METODOLOGÍA ORIENTADA A OBJETO PARA LA CONSTRUCCIÓN DE
MODELOS COMPUTACIONALES
Introducción
“El mundo está lleno de objetos, animados e inanimados, concretos y
abstractos, árboles y tablas, automóviles y casas. La Orientación a Objeto busca
modelar esos objetos del mundo real e implementarlos por medio de los
programas informáticos. Estos programas representan un serie de interacciones
entre un conjunto de objetos.” La Metodología Orientada a Objeto comprende tres
fases: Análisis, Diseño, Desarrollo o Implementación. (Joyanes, Luis.
Programación Orientada a Objeto. 1996.)
3.1. FASE ANÁLISIS ORIENTADO A OBJETO (AOO)
ANÁLISIS: Identificación de clase, atributos y métodos. Consiste en separar las
partes de un problema con la finalidad de estudiar su naturaleza, su función y/o su
significado. Pretende responder a la pregunta ¿Qué hace?, encontrar los tipos de
objetos del mundo real que están presentes en el dominio del problema,
determinando sus características (atributos), su comportamiento (métodos) e
interacciones (con otras clases de objetos). Esta fase se compone de 4 pasos o
etapas: Subrayado de nombres y verbos; Asignación de Responsabilidades
determinando atributos y métodos; Definir la lógica de programación de los
métodos; Caracterizar las relaciones entre clases y objetos.
21. 1. Subrayado de nombres y verbos: La técnica utilizada en esta fase es: (a) leer
la definición o descripción del problema y (b) subrayar los nombres o frases con
nombres y los verbos o frases con verbos. Los nombres son buenos candidatos a
Clases o atributos de clases. Los verbos son buenos candidatos a Métodos.
Criterios para clasificar objetos:
Cosas Tangibles: mesa, carro, teléfono, avión.
Interacciones: matrimonio, ventas, compras.
Roles: gerente, empleado, propietario, cliente.
Incidentes : viaje, transacción, llegada, accidente, vuelo
Organizaciones: empresas, departamento, divisiones, direcciones, áreas
Lugares geográficos: país, ciudad, muelle de carga, sala de embarque
Especificaciones: descripciones, estándares
2. Asignación de Responsabilidades: Este paso comienza con la asignación de
responsabilidades a cada clase. Las responsabilidades se dividen en 2 grupos: La
información que debe tener (atributos) y Las operaciones que debe realizar
(métodos).
3. Descripción de los métodos de cálculo: En esta parte se determina el tipo de
estructura de control que se utilizará en la lógica de programación y se describen
los métodos de cálculo. Las estructuras de control que utilizaremos en este curso
serán de tres tipos: Secuenciales, Selectivas y Repetitivas.
4. Caracterización de Relaciones: En este paso se analizan las relaciones entre
clases y el modo en que éstas se convierten en una implementación. Para los
efectos de este curso analizaremos únicamente las relaciones de asociación de
clases.
Una Asociación es una relación, en las que un objeto realiza llamadas a los
servicios (métodos) de otro, interactuando de esta forma con él. Establece una
22. cardinalidad o multiplicidad. Una asociación define una relación de pertenencia. La
dirección de la asociación puede ser de 2 tipos: Unidireccional o Bidireccional.
La cardinalidad expresa el número de instancias de una clase (objetos) que
se asocian con instancias de la clase asociada, pudiendo ser:
1. Una a Una
2. Una a Muchas / Muchas a Una
3. Muchas a Muchas
Para establecer las relaciones de asociación es necesario dar respuesta a
frases como: “… pertenece a …”; “… es miembro de …”; “… está asociado con
…”; “… estudia en …”
3.2. FASE DISEÑO ORIENTADO A OBJETO (DOO)
DISEÑO: Representación gráfica de las clases. Es el proceso de configuración
mental previo, en la búsqueda de la solución a un problema. Pretende responder a
la pregunta ¿Cómo lo hace?
Se debe establecer el tipo de dato a que corresponden los atributos de las
clases, si los métodos deben retornar un valor o si necesitan de datos adicionales
(parámetros) para cumplir con su responsabilidad. Recordar que los tipos de datos
básicos son: entero, real, alfanumérico y lógico. También se pueden utilizar los
datos definidos por el usuario, como son las clases.
Una vez determinada esta información se vacía en una plantilla de diseño de
clase.
NombreClase
Tipo Atributo_1
Tipo Atributo_2
*
Tipo Atributo_N
Tipo Método_1(parámetros )
Tipo Método_2(parámetros )
*
Tipo Métdo_N(parámetros )
Plantillas de clases
23. 3.3 FASE IMPLEMENTACIÓN ORIENTADA A OBJETO (IOO)
IMPLEMENTACIÓN: Construcción de modelos computacionales empleando
algoritmos. Es el proceso de transcribir un algoritmo utilizando un lenguaje de
programación. Consiste en traducir el modelo construido en las fases de Análisis y
Diseño en el programa que dará solución al problema planteado. En nuestro caso,
para la implementación de la solución se utilizará el Pseudolenguaje.
EJERCICIOS DE ABSTRACCIÓN, Modelar “Orientado a Objeto” el siguiente
problema:
1. Dado un estudiante se desea saber cuál es su nota definitiva, calculada en
base a la suma de sus tres notas parciales.
Solución
a) Para ello debemos identificar la clase, los atributos y sus métodos.
Clase : Estudiante
Atributo(s) : Nota1, Nota2, Nota3
Método (s) : Calcular Nota Definitiva
b) Una vez caracterizado el objeto (la clase) debemos construir la Plantilla de la
clase.
Clase Estudiante
2. De un empleado se conoce su nombre, el número de Horas Trabajadas y la
Tarifa por Horas. Se pide calcular el sueldo del empleado.
24. Solución
Clase : Empleado
Atributo(s) : Horas Trabajadas, Tarifa por Horas
Método (s) : Calcular el Sueldo ( )
Clase Empleados
EJERCICIO UTILIZANDO LA METODOLOGÍA OO, Realizar el siguiente ejercicio
aplicando la metodología orientada a objeto: Una calculadora acepta 2 números
enteros, calcular la suma.
FASE 1. ANÁLISIS ORIENTADO A OBJETO
Paso 1. Subrayar nombres y verbos.
Una calculadora acepta 2 números enteros (numero1 y numero2), calcular la
suma (para nuestro caso: Sumar).
Paso 2. Asignar responsabilidades.
¿Quién será un objeto: número, entero o calculadora?
Para ser un objeto, un candidato debe poseer atributos y comportamiento. Entero
es un tipo de dato e identifica a un atributo.
Qué atributos y métodos se le pueden asignar a “Número”
“Número” es identificado por “entero” por lo que puede calificar como atributo. Así
pues, configuramos el siguiente listado de responsabilidades:
Elemento Responsabilidad
Calculadora -------- > Clase
Numero1 -------- > Atributo de Calculadora
25. Numero2 -------- > Atributo de Calculadora
Sumar() -------- > Método de Calculadora.
AsignarNumero1 -------- > Método de Calculadora.
ObtenerNumero1 -------- > Método de Calculadora.
AsignarNumero2 -------- > Método de Calculadora.
ObtenerNumero2 -------- > Método de Calculadora.
Paso 3. Lógica de programación y definición de métodos de cálculo
Estructuras de Control: Secuencial para procesar los objetos, ya que nos dan la
información de una sola calculadora. Para el cálculo también se utiliza una
estructura Secuencial.
Sumar: Método de Calculadora que tiene como función calcular la suma de dos
números enteros. La secuencia lógica es:
1. Leer los atributos del objeto // Secuencial
2. Realizar la suma de los dos atributos // Secuencial
3. Retornar el resultado // Secuencial
Donde:
Suma = Numero1 + Numero2
Paso 4. Caracterización de Relaciones
Como definimos una sola clase, no existen relaciones.
26. FASE2. DISEÑO ORIENTADO A OBJETO
Calculadora
entero Numero1
entero Numero2
AsignarNumero1(entero)
entero ObtenerNumero1()
AsignarNumero2(entero)
entero ObtenerNumero2()
entero Sumar()
FASE 3. IMPLEMENTACIÓN ORIENTADA A OBJETO
(Revisar la guía del Pseudolenguaje POO)
Definición de clases
clase Calculadora
inicio
privado:
entero Numero1, Numero2
publico:
AsignarNumero1 (entero Num1)
entero ObtenerNumero1 ( )
AsignarNumero2 (entero Num2)
entero ObtenerNumero2 ( )
entero Sumar ( )
fin
Implementación de Métodos de clases
Calculadora AsignarNumero1 (entero Valor) // Yo sólo manejoN1
inicio
Numero1 ← Valor // A Numero1 se le asigna lo que contiene Valor
fin
27. entero Calculadora ObtenerNumero1( )
inicio
retornar Numero1 // Devuelve el contenido almacenado en el atributoNumero1
fin
Calculadora AsignarNumero2 (entero Valor)
inicio
Numero2 ← Valor // A Numero2 se le asigna lo que contiene Valor
fin
entero Calculadora ObtenerNumero2 ( )
inicio
retornar Numero2 // Devuelve el contenido almacenado en el atributo Numero2
fin
entero Calculadora Sumar ( )
inicio
entero Resultado // esta es una variable local del método
Sumar Resultado ← Numero1 + Numero2 //se suma el valor de los 2 atributos
retornar Resultado
fin
// Notar que la variable local a retornar “Resultado” debe ser del mismo tipo
(entero) que el valor que retorna el método (definido como entero en su
encabezado)
Implementación de la Aplicación
La aplicación es la que interactúa con el usuario, leyendo datos (desde el teclado)
y mostrando resultados (por la pantalla o impresora). Toda aplicación tiene una
secuencia lógica, a saber:
1. Creación de los objetos
2. Darle vida a los objetos, agregándole la información a sus atributos
3. Poner a Interactuar los objetos, entre ellos y con la aplicación
4. Mostrar el resultado de la interacción.
28. principal ( )
inicio
Calculadora Cal // Creación del objeto
IECalculadora (Cal) // Interfaz de Entrada, con la que se le da vida a losobjetos
entero Resultado //Es una variable de la aplicación
Resultado ←Cal.Sumar( ) //La aplicación interactuando con el objeto
InterfazSalida (Resultado) //Para mostrar el Resultado
fin
Implementación de los métodos de la Aplicación
IECalculadora (Calculadora Cal) //Interfaz de Entrada para la Calculadora
inicio
entero Valor //Revisar el uso de N1, N2
escribir (“Ingrese el 1er Número:”) //muestra el mensaje vía pantalla
leer (Valor) //Guarda lo tecleado en Valor
Cal.AsignarNumero1(Valor) //Asignamos la información del atributo
escribir (“Ingrese el 2do Número:”) //muestra el mensaje vía pantalla
leer (Valor) //Guarda lo tecleado en Valor
Cal.AsignarNumero2(Valor) //Asignamos la información del atributo
fin
InterfazSalida (entero Resultado)
inicio
escribir (“La Suma de los números dados es: ” , Resultado) //muestra vía pantalla
fin
29. Evaluación del Aprendizaje
Lee con atención los siguientes planteamientos y coloca dentro del paréntesis de
la izquierda la letra de la opción que contesta correctamente cada uno de ellos.
1. ( ) Al conjunto de cuestiones que se plantean para ser resueltas se le llama...
a) Situación
b) Restricción
c) Información
d) Problema
2. ( ) Para comprender un problema se deben extraer...
a) Datos
b) Criterios
c) Dominios
d) Clasificaciones
3. ( ) Al conjunto de valores que un dato puede tener se le conoce como...
a) Métodos
b) Criterios
c) Dominios
d) Clasificaciones
4. ( )
A un objeto simbólico que se utiliza para representar datos se le conoce
como...
a) Objeto
b) Identificador
c) Componente
d) Término
5. ( ) Identificador que guarda el valor de un dato que no cambia, se le llama...
a) Constante
b) Objeto
c) Variable
d) Diferencia
30. 6. Anota dentro del paréntesis una V si es verdadero o una F si es falso el
enunciado sobre las características del algoritmo.
( ) Es un conjunto ordenado e infinito de instrucciones.
( ) La secuencia son pasos que se realizan en un orden estricto.
( ) La utilización de variables o constantes no son necesarias.
( ) Describe la transformación de cada entrada en la salida.
( ) Debe tener un solo punto de inicio y varios de finalización.
7. Menciona en orden las tres partes importantes para la creación de un algoritmo
1:
2:
3:
Lee con atención los planteamientos y elabora un algoritmo para cada problema.
8. Calcula la superficie de un triángulo dada su base, considerando que la
superficie se calcula mediante la fórmula: superficie = base * altura / 2
9. Dado como dato la calificación de un alumno, escribe “APROBADO” si su
calificación es mayor o igual a 12 y “REPROBADO” si su calificación es de 0 a 11.
10. Calcula la velocidad de un auto si se considera la distancia recorrida y el
tiempo que tarda, mediante la fórmula: V = d / t
Donde:
v = velocidad
d = distancia
t = tiempo
11. Dada cinco calificaciones de un alumno, obtén y muestra su promedio.
31. Lee con atención los siguientes planteamientos y coloca dentro del paréntesis de
la izquierda la letra de la opción que contesta correctamente cada uno de ellos.
12. ( ) A la forma gráfica de representar un problema por medio de símbolos
se le llama...
a)algoritmo.
b)pseudocódigo.
c)diagrama de flujo.
d)top down.
13. ( ) Al elaborar un diagrama de flujo se debe construir...
a)de derecha a izquierda.
b)abajo hacia arriba.
c)horizontalmente.
d)arriba hacia abajo.
14. ( ) El algoritmo es un conjunto ordenado que representa una serie de
pasos para resolver un problema cuyas partes son:
a)Introducción - Proceso - Conclusión.
b)Dato - Desarrollo - Resultado.
c)Entrada - Proceso - Salida.
d)Problema - Hipótesis - Respuesta.
15. ( ) Dado como dato el sueldo de un trabajador, aplica el aumento del 15% si
su sueldo supera los Bs. 1000,00
a) Obtener valor de sueldo.
Si el sueldo es mayor o igual a Bs1000,00 incrementarlo en un 15%.
b) Obtener valor de sueldo.
Si el sueldo es menor o igual a Bs1000,00 incrementarlo en un 15%.
32. a)Variable
b)Pseudocódigo
c) Algoritmo
d)Análisis
e)Proceso
c) Obtener valor de sueldo.
Si el sueldo es menor a Bs1000,00 incrementarlo en un 15%.
d) Obtener valor de sueldo.
Si el sueldo es mayor a Bs1000,00 incrementarlo en un 15%.
16. Relaciona la columna de las características de algoritmo con la columna de
conceptos y escribe dentro del paréntesis la letra que corresponda.
( )
Conjunto ordenado y finito de pasos que dan
como resultado la solución de un problema.
( )
( )
Falso lenguaje de programación que imita de
manera abreviada las instrucciones.
( ) Es la acción de diferenciar en un problema la
entrada, proceso y salida de datos.
( ) Nombre genérico asignado a un identificador cuyo
valor cambia constantemente
33. Clave de Respuestas
Pregunta Respuesta
1 d
2 a
3 c
4 b
5 a
6
F
V
F
V
F
7 Entrada
Proceso
Salida
8 Inicio
Obtener valor de base
Obtener valor de altura
Calcular base * altura / 2
Escribir valor de superficie
Fin
9 Inicio
Obtener calificación.
Si calificación >= 12 escribir
“APROBADO”.
Si calificación <= 12
escribir "REPROBADO”
Fin
10 Inicio
Obtener distancia
Obtener tiempo
Calcular d / t
Escribir valor de
velocidad.
Fin
11 Inicio
Obtener calificación 1
Obtener calificación 2
Obtener calificación 3
Obtener calificación 4
Obtener calificación 5
Sumar calificaciones 1, 2,
3, 4 y 5
34. Calcular el promedio
dividiendo el resultado
anterior entre 5
Escribir el promedio
Fin
12 c
13 d
14 c
15 d
16
c
b
d
a
Si tuviste problemas para acertar las respuestas, te sugiero que leas y
repases el material de estudio