TEMA I “Conceptos Básicos y Metodología de las 6'D.”
1.1
Introducción.
Los problemas que se plantean diariamente en el interior
de una empresa, ya sean de gestión, técnicos, matemáticos, etc. suelen ser
resueltos mediante el uso de la capacidad intelectual y la habilidad manual de las
personas. Diremos entonces que el problema ha sido resuelto en forma manual.
Al utilizar
la computadora para la resolución de problemas se emplea la forma
automática, la cual aporta grandes ventajas como: la
rapidez de ejecución y la
fiabilidad en los resultados obtenidos.
Un gran
número de problemas conllevan complicados cálculos, así como el manejo de
grandes cantidades de datos.
Si se trata
de resolver el problema de una forma manual, en el primer caso, el riesgo de
equivocarse es grande, y en el segundo, el trabajo se convierte en pesado y
rutinario.
Sin embargo
empleando la forma automática se eliminan los inconvenientes que surgen al
hacerlo de forma manual, ya que la capacidad de la computadora se basa en las
características: rapidez, memoria
y precisión.
No obstante,
la computadora por sí sola no podría resolver ni el más sencillo problema que
se nos pueda ocurrir. Es preciso describirle con detalle y en su lenguaje todos
los pasos que debe desarrollar para encontrar la solución de un problema.
Esta
descripción detallada es conocida con el nombre de Programa
de computadora y es el que dirigirá el
funcionamiento de la misma, pero antes de escribir ese programa se debe
desarrollar un algoritmo
que encuentre la solución al problema y que posteriormente pueda ser
transformado a ese programa de computadora.
1.2 ¿Qué es un
algoritmo?
Por Algoritmo,
entenderemos la secuencia lógica de pasos que trata un conjunto de datos para
resolver un problema (de forma particular o general) y obtener un resultado
(información).
Por la
naturaleza de los datos que presenta un problema y el objetivo que se pretende
lograr, los algoritmos pueden ser clasificados en tres tipos.
Tipos de Algoritmos:
- Numéricos.
- No
Numéricos.
- Cotidianos.
Los Algoritmos
Numéricos, están orientados a la solución de problemas
que requieren la capacidad de hacer cálculos, a través de la computadora.
Los Algoritmos
No Numéricos, están orientados a la solución de
problemas, en donde se requiere la capacidad de la toma de decisiones de la
computadora más que de sus características (rapidez, memoria y precisión).
Los Algoritmos Cotidianos,
son aquellos que se desarrollan dentro de la vida diaria de todo ser humano y
que los hemos aprendido de una forma empírica, es decir, sin darnos cuenta de
ello.
Características
de algoritmos:
1. Debe
ser preciso.
2. Debe
estar definido.
3. Debe
ser finito.
1.3 Estructura
de un algoritmo.
Si un
algoritmo consiste en una secuencia lógica de pasos que tratan un conjunto de
datos con la finalidad de obtener resultados.
Desde el
punto de vista funcional la estructura de un algoritmo se compone de:
- Entrada (datos)
- Proceso (operaciones aritméticas y lógicas)
- Salida (información).
La Entrada,
está formada por el conjunto de pasos que toman los datos de un dispositivo
externo y los depositan en la memoria central, ya depurados y validados.
El Proceso,
es el conjunto de pasos que resuelven el problema aplicando operaciones
aritméticas y lógica a los datos de entrada, dejando los resultados (información)
en la memoria central.
Y la Salida,
la integran los pasos que hacen que la información sea presentada a través de
un dispositivo externo (un monitor, una impresora, etc.).
1.4 Conceptos básicos
del modelo orientado a objetos.
Un Clase,
es el nombre que se le asigna a un conjunto de elementos (objetos) que
contienen las mismas características y comportamiento (atributos y métodos) y
se distinguen entre ellos por su estado específico.
Un Objeto,
es considerado un elemento tangible o intangible que existe en el mundo real y
se crea a partir de una clase, por lo que forma parte de ella y cuenta con sus atributos
y métodos.
Un Método,
define el comportamiento que tienen los objetos, es decir lo que los objetos
pueden hacer y es parte de una clase.
Un Atributo,
es una característica o identificador que ayuda a describir un objeto y es
parte de una clase.
Tanto los
métodos como los atributos son parte de un objeto y tienen un tipo de acceso,
lo que permite la comunicación con otros objetos, dichos tipos de acceso pueden
ser: privados (private
-), protegidos
(protected #) y públicos
(public +).
Ejercicios
propuestos:
Objetos: bicicleta, auto, camino, avión y
motocicleta.
Clase:
Atributos:
Métodos:
Objetos: triangulo, rectángulo, cuadrado y
círculo.
Clase:
Atributos:
Métodos:
Objetos: tienda, casa, edificio y bodega.
Clase:
Atributos:
Métodos:
Clase: Países.
Atributos:
Métodos:
Objetos:
Clase: Persona.
Atributos:
Métodos:
Objetos:
Clase: Operaciones.
Atributos:
Métodos:
Objetos:
1.5 Metodología
de las 6’D para la solución de problemas.
La metodología
de las 6’D, consta de 6 etapas en donde cada una de
ella tiene su nombre que comienza con la letra “D”, dichas etapas son:
- Descripción
del problema.
- Definición
de la solución.
- Diseño
de la solución.
- Desarrollo
de la solución.
- Depuración
de la solución.
- Documentación.
La primera
etapa, Descripción del problema,
consiste en identificar claramente cuál es el problema que se quiere resolver,
obtener una descripción general del mismo y llegar a un enunciado claro y
preciso del problema.
La segunda
etapa, Definición de la solución,
su objetivo es encontrar las especificaciones que ayuden en la solución del
problema, definiendo el resultado concreto que se quiere alcanzar, los datos
que se deben ingresar o generar para obtener el resultado y la forma en que los
datos serán procesados para transformarlos en información.
La tercera
etapa, Diseño de la solución,
busca encontrar el diagrama y algoritmos que resuelvan el problema, para lo cual
debe usar un lenguaje de modelado como UML y definir el nombre del proyecto y
los diagramas, relaciones y clases que nos ayuden a llegar al desarrollo de los
algoritmos. Esta etapa se puede repetir en el caso de que el algoritmo no
encuentre la solución al problema encontrado en la etapa uno.
La cuarta
etapa, Desarrollo de la solución,
el objetivo de esta etapa es obtener un programa, codificando el algoritmo
desarrollado en la etapa anterior, utilizando un lenguaje de programación y su
serie de instrucciones que nos ayuden a transformar los diagramas y algoritmos
en programas de computadora, cada programa desarrollado debe tener comentario
que ayuden a entender mejor su desarrollo y hacer copias de seguridad cada vez
que se pretenda desarrollar una prueba.
La quinta
etapa, Depuración de la solución,
una vez codificadas las clases y programas deben ser puestas a prueba con la
finalidad de corregir los errores de sintaxis y de lógica que sean detectados
con el fin de conseguir el resultado deseado.
La sexta
etapa, Documentación, busca
obtener la serie de manuales necesarios para el uso del programa, dichos
manuales son: manual técnico, manual de programación y manual del usuario. En
el manual técnico se debe incluir: la definición del problema, resultados esperados
y datos necesarios, diagramas UML y diagramas de flujo o pseudocódigo, pruebas
desarrolladas y lista de programas con sus comentarios internos.
1.6 Principios
de la programación orientada a objetos.
Los
principios de la programación orientada a objetos son una serie de elementos
que nos ayudan a que un software orientado a objetos tenga un mejor desempeño,
un buen estilo de programación y que ayude a que su desarrollo sea más fácil,
dichos principios son:
- Abstracción.
- Encapsulamiento.
- Modularidad.
- Jerarquía
y Herencia.
- Polimorfismo.
La Abstracción,
es la descripción exterior de un objeto, que sirva para separar su
comportamiento esencial del no esencial, es decir el ¿qué hace? pero no el
¿cómo lo hace?, y poder utilizar esa descripción en el momento de su
programación.
El Encapsulamiento,
oculta los datos internos del funcionamiento de un objeto y solo permite el
acceso a esos datos por medio de sus interfaces públicas (métodos), es decir
restringe el acceso a los datos de la clase y con ello evitar que el objeto se
comporte de manera distinta a la esperada.
La Modularidad,
es la propiedad que permite dividir una aplicación en partes más pequeñas
llamadas módulos, que son fáciles de resolver, cada modulo debe ser tan
independiente como sea posible de los demás y debe tener la capacidad de
comunicarse con los demás módulos por medio de su interfaz.
La Jerarquía
y Herencia. La jerarquía
es la dependencia que tiene una clase con respecto otra u otras clases, con la
finalidad de formar la estructura jerárquica de clases que manejan los
lenguajes de programación orientados a objetos. Los tipos de jerarquía más
importantes en la abstracción de un problema son:
- Estructura
de clases, conocida también como jerarquía de generalización/especialización
(es un).
- Estructura
de objetos, conocida también como jerarquía de agregación (parte de ó tiene
un).
Por otra
parte la herencia, permite que un
objeto sea construido a partir de otro ya existente, con el fin de reutilizar
sus atributos y comportamiento visible, evitando la duplicación de código
previamente desarrollado. La herencia supone una clase base y una jerarquía de
clases llamadas derivadas, en donde las clases derivadas heredan las características
y comportamiento de las clases base que sean visibles (acceso público).
El Polimorfismo, es la propiedad que le permite a un objeto (referencia) tener acceso a
múltiples clases y comportarse de manera diferente ante un mismo mensaje, generando
una apariencia de que se usa el mismo código pero su respuesta es diferente en
cada momento o situación.