¿QUÈ CARAJOS ES POO?

Pensemos en el estilo Vintage que es un término francés que se utiliza para referirse a objetos, accesorios y prendas provenientes de la década de 1920. Es un estilo elegante y romántico, que se logra mezclando objetos de diseño antiguo con accesorios vanguardistas y modernos. ok pues así como una persona puede optar por este estilo (pero ojo otro dirá que carajos yo quiero ser estilo hipster) así un desarrollador puede elegir un estilo un modelo de programar en este caso estudiaremos la PROGRAMACION ORIENTADA A OBJETOS que básicamente es un Paradigma.

Taller de Lectura 1

El artículo presenta los conceptos que rigen a los lenguajes de programación y los paradigmas de la programación y como estos influyen en el desarrollo del software.

Un Paradigma

Según el físico y filósofo estadounidense Thomas Samuel Kuhn (1922-1996), en su libro La estructura de las revoluciones científicas, los paradigmas son:

“Logros científicos que generan modelos que, durante un período más o menos largo, y de modo más o menos explícito, orientan el desarrollo posterior de las investigaciones exclusivamente en la búsqueda de soluciones para los problemas planteados por estas”.

Y ahora como descifrar esto, sencillo un paradigma son modelo, patrón, ejemplo, MOLDE, ideal, así como canon, norma o regla. En conclusion como paradigma denominamos todo aquel modelo, patrón o ejemplo que debe seguirse en determinada situación.

Objeto

Los objetos son cualquier cosa si cualquier cosa así de sencillo. cualquier cosa de la que podamos emitir un concepto porque vaya que si lo vamos a necesitar, tenemos alrededor nuestro una cantidad de objetos que somos capaces de representarlos en una solución informática. 

Mobirise

que tal si hacemos un proceso mental, si observas el objeto a la izquierda, se que tendrás un concepto preconcebido en su mente y dirás que es un AUTOMOVIL pensemos en este momento en ese automóvil, 4 llantas, 2 puertas, 2 farolas. etc.  

Mobirise

Si lo es ya lo sabemos que es un Moto, 2 llantas, color negro, 1 farola, 1 motor, etc.

Ahora estudiemos como están formados los OBJETOS

Primero por Datos que representan su estructura. En otras palabras, ATRIBUTOS que describen su forma o apariencia.

Segundo por MÉTODOS que implementan las funciones propias de su comportamiento, es decir, MÉTODOS que manipulan los datos para hacer la entrada, proceso y salida de los mismos. En el contexto no orientado a objetos, a los métodos se les conoce como procedimientos, módulos, funciones, subrutinas, etcétera.

Podemos ahora realizar un esquema. para lograr entender mejor.

Mobirise

El objeto se representa con un rectángulo redondeado y está formado por dos partes: una parte son los datos que representan la estructura del objeto y la otra parte
son los métodos que implementan las operaciones que se deben realizar sobre los
datos.

Cuándo y cómo identificar los objetos

Estudiemos el siguiente problema para mayor comprensión.

1) PLANTEAMIENTO DEL PROBLEMA

En la empresa X se tienen varios empleados; por cada empleado se tienen los datos: Nombre, Número de horas trabajadas y Cuota que se le paga por hora trabajada. Cada quincena se requiere emitir un cheque con los datos: Nombre del empleado y Sueldo que se le debe pagar. El sueldo se calcula multiplicando las horas trabajadas por cuota por hora.

Resumiendo, desde la perspectiva de entrada-proceso-salida:

Información que debe imprimir como salida: Nombre y Sueldo.
Datos que se deben leer: Nombre, Horas trabajadas y Cuota por hora.
Proceso por seguir: calcular Sueldo=Horas trabajadas x Cuota por hora

2) IDENTIFICACION DE LOS OBJETOS

OJO recordemos algo que es un SUSTANTIVO (Que tiene existencia real e independiente)

¿Cómo se identifican los objetos? Se buscan los sustantivos presentes en la especificación; En nuestro problema se menciona un sustantivo: los empleados. 

Aplicando esto, en el problema formulado líneas antes tenemos que nuestro programa debe representar una colección de empleados como la que se muestra en la siguiente figura:

Mobirise

Clases y su relación con los objetos

La clase es una representación abstracta que describe a un conjunto de objetos; en otras palabras, es un tipo de dato abstracto que representa a un conjunto de objetos que tienen en común una misma estructura (de datos) y un mismo comportamiento.

Sabe que mejor una clase es un Molde. aunque técnicamente es lo anterior.

En la fase de diseño del programa, el elemento central es la clase porque un conjunto de objetos iguales debe ser representado en forma abstracta por una clase, que fungirá como una plantilla o molde para crear todos y cada uno de los objetos necesarios.

En el entorno del proceso de programación sigue el paso:

3) DISEÑO DEL PROGRAMA

Para diseñar el programa, se elabora o diseña el algoritmo que soluciona el problema en dos pasos: primero, se diseña el diagrama de clases; segundo, se diseña la lógica de las clases en seudocódigo; después se hace la prueba de escritorio. 

Determinar las clases

Una vez identificados los objetos del problema, se procede a diseñar el diagrama de clases, para lo cual debemos primero determinar la(s) clase(s) que necesitaremos y luego dibujar el diagrama con la representación de la(s) clase(s) y sus instancias.

Los objetos identificados en el punto anterior se convierten en clases que, como ya se mencionó, son la representación abstracta de un conjunto de objetos; aplicando este concepto al problema que nos ocupa, el cual tiene un conjunto de objetos de empleados, tenemos que dicha colección se representa como CLASE.

Representación de la clase y sus instancias

La línea indica que hay una relación “instancia de” u “objeto de”; por ejemplo, que Juan es una instancia, objeto u ocurrencia de la clase Empleado, lo mismo que Pedro, Mateo, etcétera..

Mobirise



Métodos (lo que antes llamamos funciones ahora son acciones, comportamiento)

Como ya lo hemos mencionado, un objeto es representado por medio de datos:
datos que deben entrar como materia prima y datos que deben calcularse a partir de otros datos. Los métodos son las acciones que implementan el comportamiento o las funciones de un objeto: por ejemplo, leer o dar entrada a los datos, hacer cálculos, imprimir o dar salida de datos. 

Encapsulación

comprendido que tenemos una clase llamada EMPLEADO y que debemos analizar los datos y los métodos. La encapsulación significa colocar juntos los datos y los métodos dentro de un objeto. 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. Ninguno, ni el código ni los datos, existen en un vacío. Los datos dirigen el flujo del código y el código manipula la forma y valores de los datos.

Cuando el código y los datos son entidades separadas, siempre existe el peligro de llamar al método correcto con los datos erróneos o viceversa. Juntar los dos es trabajo del programador. El objeto mantiene en sincronía los datos y los métodos empacados juntos en el mismo.

Al diseñar la estructura de una clase, se deben hacer dos cosas:

1. Definir los datos que representarán a los objetos de la clase. Los datos que representan a un objeto son de dos tipos:

                 -> Un tipo son los datos que entrarán como materia prima, es decir, que se deberán leer a través                           de dispositivos de entrada.

                 -> El otro tipo son datos que se deben generar mediante cálculos.

2. Definir los métodos que implementarán las acciones de los objetos. Los métodos son de dos tipos:

                  -> Un tipo son los métodos que colocan o establecen (setters) valores a los datos del objeto, ya                              sean datos que se leen o datos que se generan mediante cálculos.

                  -> El otro tipo son los métodos que acceden u obtienen (getters) los valores de los datos para                                utilizarlos, ya sea para hacer cálculos, para darles salida o hacer otra cosa con ellos.

¿COMO IDENTIFICAR LOS METODOS DEL PROBLEMA? Se buscan los verbos presentes en el planteamiento del problema. En nuestro caso se debe:

Imprimir como salida: Nombre y Sueldo.
Leer los datos: Nombre, Horas trabajadas y Cuota por hora.
Calcular el sueldo: Sueldo=Horas trabajadas x Cuota por hora.

                                                                                     nombreEmp     Nombre del empleado
                                                                                     horasTrab         Número de horas trabajadas
                                                                                     cuotaHora        Cuota por hora
                                                                                     sueldo             Sueldo del empleado

Observe que los métodos setter inician su nombre con “establecer” o “calcular” y los métodos getter inician con “obtener”. Asimismo, observe que no se define un método getter para todos los datos; en este caso sólo se definieron para los datos que se van a imprimir como salida: nombreEmp y sueldo.

Para cada dato, se debe definir un método para establecer o colocar (setter) el valor que tomará —ya sea que lo tome a través de la lectura del dato, de la realización de cálculos, o de otra forma— y un método obtener (getter) para cada dato a cuyo valor se requiera acceder para utilizarlo, ya sea para hacer cálculos, para imprimirlo o para hacer alguna otra cosa con él.

En nuestro problema, se requieren los siguientes métodos:

establecerNombreEmp().     Para establecer el valor del dato nombreEmp.
establecerHorasTrab().         Para establecer el valor del dato horasTrab.
establecerCuotaHora().        Para establecer el valor del dato cuotaHora.
calcularSueldo().                 Para calcular y establecer el valor del dato sueldo.
obtenerNombreEmp().         Para acceder e imprimir el valor del dato nombreEmp.
obtenerSueldo().                 Para acceder e imprimir el valor del dato sueldo.

Diseño del diagrama de clases

Una vez que se tienen definidos los datos y los métodos necesarios, se procede a diseñar la estructura de la clase, que al mismo tiempo se convierte en el diagrama de clases. Se hace con el siguiente formato: 

En donde:
NombreClase Indica el nombre de la clase.
dato1, dato2, dato3, datoN Son los datos que representarán a cada uno de los
objetos de la clase.
método1(), método2(), Son los métodos que establecerán y obtendrán
método3(), métodoN() los valores de los datos de cada uno de los objetos de
esta clase.
() Indica que es un método.
- Modificador de acceso (visibilidad).



Modicadores de acceso (visibilidad)


 Visibilidad de los datos

Visibilidad de los métodos

Mobirise

En donde:

Se tienen los datos:

- dato1 Privado (Private)
+ dato2 Público (Public)
# dato3 Protegido (Protected)
= dato4 Estático (Static)

Y los métodos:

- método1 Privado (Private)
+ método2 Público (Public)
# método3 Protegido (Protected)
= método4 Estático (Static)
* método5 Abstracto (Abstract)

oOJOOOOOOOOOo

Por defecto (default), los datos son privados; es decir, si no se les define su visibilidad mediante alguno de los modificadores de acceso (- + # =), entonces los datos son privados.

Por defecto (default), los métodos son públicos; es decir, si no se les define su visibilidad mediante alguno de los modificadores de acceso (- + # = *), entonces los métodos son públicos..

Mobirise

Explicación:
Se tiene el diagrama de clases, el cual consta de una clase.

Nombre de la clase: Empleado

Datos que tiene la clase:
nombreEmp            Nombre del empleado
horasTrab                Número de horas trabajadas
cuotaHora               Cuota por hora
sueldo                    Sueldo del empleado

Métodos que tiene la clase:
establecerNombreEmp(). Para establecer el valor del dato nombreEmp.
establecerHorasTrab().     Para establecer el valor del dato horasTrab.
establecerCuotaHora().    Para establecer el valor del dato cuotaHora.
calcularSueldo().             Para calcular y establecer el valor del dato sueldo.
obtenerNombreEmp().    Para acceder e imprimir el valor del dato nombreEmp.
obtenerSueldo().             Para acceder e imprimir el valor del dato sueldo.

Generar instancias de una clase

Una vez que tenemos definida una clase como Empleado, ésta se utiliza para generar instancias u ocurrencias. Estas instancias son los objetos que darán vida al funcionamiento de nuestro programa. Esto quiere decir que la clase es como un molde, una plantilla o tipo de dato que se utiliza para generar objetos específicos.

En la siguiente figura se esquematiza:

Mobirise

Ejercicios

Elaborar un algoritmo para calcular el área de un triángulo. Se requiere imprimir como salida el área del triángulo. Los datos disponibles para leer como entrada son la base y la altura del triángulo.

El área se calcula:

Área = Base X Altura  / 2

Elaborar un algoritmo que permita leer el tamaño de un ángulo en radianes, luego que calcule e imprima el seno y coseno.  

Elaborar un algoritmo para calcular el promedio de calificaciones de un estudiante. Los datos disponibles para lectura son el nombre, calificación 1, calificación 2, calificación 3 y calificación 4 de cada uno de los cuatro exámenes presentados. La información que se debe imprimir es el nombre y el promedio de las calificaciones. El promedio se obtiene sumando las cuatro calificaciones y dividiendo la suma entre 4.

 Hacer un algoritmo que obtenga e imprima el valor de Y a partir de la ecuación
Y = 3X² + 7X - 15
solicitando como dato de entrada el valor de X..

elabore un algoritmo que lea un número de pies y calcule e imprima su equivalente en yardas, pulgadas, centímetros y metros, de acuerdo con las siguientes
equivalencias: 1 pie = 12 pulgadas, 1 yarda = 3 pies, 1 pulgada = 2.54 cm, 1 metro = 100 cm

Elaborar un algoritmo que lea el radio(r) de una esfera, calcule e imprima el volumen y el área.

                   4πr al cubo
VOLUMEN = ───────                    ÁREA = πr2
                          3

Free AI Website Creator