Inteligencia Artificial. Principios de la Programación Orientada a Objetos.

Los cuatro conceptos centrales en una programación orientada a objetos son:

la herencia.

el polimorfismo.

 la abstracción.

 Y, encapsulación.

veamos cada uno de estos conceptos antes de la programación orientada a objetos, teníamos una programación procedimental que dividía un programa en un conjunto de funciones, así que tener datos almacenados en un montón de variables y funciones que operan en los datos, esta programación de diálogo es muy simple y, a menudo, es lo que aprenderá como parte de su primera asignatura de programación.



Pero a medida que sus programas se sofisticaban, terminará con un montón de funciones que están por todos lados, es posible que se encuentre copiando y pegando líneas de código una y otra vez, haga un cambio en una función y luego varias otras funciones se rompen, eso es lo que nosotros llamamos código espagueti, hay tanta interdependencia entre todas estas funciones, se vuelve problemático, la programación orientada a objetos vino a resolver este problema . En una programación orientada a objetos combinamos un grupo de variables y funciones relacionadas en una unidad que llamamos objeto.



Refiérase a estas variables como propiedades y las funciones como métodos, aquí hay un ejemplo piense en un automóvil. un automóvil es un objeto, con propiedades como modelo y color. y métodos como comenzar, detener y andar en reversa.  piense en el objeto de almacenamiento local en sus navegadores, cada navegador tiene un objeto de almacenamiento local que le permite almacenar datos localmente, este objeto de almacenamiento local tiene una propiedad como, Longitud que devuelve el número de objetos en el almacenamiento y los métodos como establecer elemento y eliminar elemento, por lo que en la programación orientada a objetos agrupamos las variables relacionadas y las funciones que operan en ellas en objetos y esto es lo que llamamos encapsulación, 

permítanme mostrarles un ejemplo de esto en acción, así que aquí tenemos tres variables: salario base, horas extras y tarifa.  Por debajo de estos tenemos una función para calcular el salario de un empleado nos referimos a este tipo de implementación como procedimental por lo que tenemos variables en un lado y función.



Por otro lado, ahora están desacoplados, echemos un vistazo a la forma orientada a objetos de resolver este problema. Podemos tener un objeto de empleado con tres propiedades: salario base, horas extras y  tarifa, y un método llamado obtener sueldo ahora, ¿por qué es mejor? De todos, mire la función obtener salario, esta función no tiene parámetros, en contraste en un ejemplo de procedimiento, nuestra función obtener salario tiene tres parámetros, la razón en esta implementación, no tenemos ningún parámetro es porque todos estos parámetros están realmente modelados.



Como propiedades de este objeto, todas estas propiedades y obtienen la función de salario, están muy relacionadas, por lo que forman parte de una unidad, por lo que uno de los síntomas del código de procedimiento son las funciones con tantos parámetros. Escribes código de manera orientada a objetos, tus funciones terminan teniendo cada vez menos parámetros.



Las mejores funciones son aquellas sin parámetros. Cuanto menor sea el número de parámetros, más fácil será utilizar y mantener esa función. Entonces eso es encapsulación. Ahora, veamos la abstracción. Piense en el reproductor de DVD como un objeto. Este reproductor de DVD tiene una placa lógica compleja en el interior y si tiene botones en el exterior con los que interactúa, simplemente presione el botón de reproducción y no le importa lo que suceda en el interior.



La complejidad está oculta para ti. Esto es abstracción en la práctica. Podemos utilizar la misma técnica en nuestros objetos. Entonces podemos ocultar algunas de las propiedades y materias del exterior y esto nos da un par de beneficios. En primer lugar, simplificaremos la interfaz de esos objetos mediante la comprensión y el objeto con algunas propiedades y métodos es más fácil que un objeto con varias propiedades y métodos.



El segundo beneficio es que nos ayuda a reducir el impacto del cambio. Imaginemos que mañana cambiamos estos métodos internos o privados. Ninguno de estos cambios conducirá al exterior porque no tenemos ningún código que toque estos métodos fuera de su objeto contenedor. Podemos eliminar nuestro método o cambiar sus parámetros, pero ninguno de estos cambios afectará al resto del código de la aplicación.



Entonces, con la abstracción, reducimos el impacto del cambio. Ahora, el tercer concepto central en la programación orientada a objetos es la Herencia La herencia es un mecanismo que le permite eliminar el código redundante. He aquí un ejemplo. Piense en elementos HTML, como cuadros de texto desplegables. Enlaces, casillas de verificación, etc. Todos estos elementos tienen algunas cosas en común.



Deben tener propiedades como HTML oculto e interno y métodos como hacer clic y enfocar. En lugar de redefinir todas estas propiedades y métodos para cada tipo de elemento HTML, podemos definir los que están en un objeto genérico, llamarlo elemento HTML y hacer que otros objetos hereden estas propiedades y métodos.



Entonces, la herencia nos ayuda a eliminar el código redundante. Y finalmente polimorfismo, Poly significa muchos más medios de forma. Entonces polimorfismo significa muchas formas. En la programación orientada a objetos, el polimorfismo es una técnica que le permite deshacerse de los demás o activar declaraciones de casos. Así que volviendo a nuestro ejemplo de elementos HTML, todos estos objetos deberían tener la capacidad de ser renderizados en una página.



Pero la forma en que se representa cada elemento es diferente a los demás. Si queremos representar varios elementos HTML de forma procedimental, nuestro código probablemente se vería así. Pero con la orientación a objetos, podemos implementar un método de renderizado en cada uno de estos objetos y el método de renderizado se comportará de manera diferente dependiendo del tipo de objeto al que hagamos referencia.



Entonces podemos deshacernos de este desagradable interruptor y usar una línea de código. Así que aquí están los beneficios de la programación orientada a objetos. Usando la encapsulación, agrupamos las variables y funciones relacionadas juntas y de esta manera podemos reducir la complejidad. Ahora podemos reutilizar este objeto en diferentes partes de un programa o en diferentes programas con abstracción, ocultamos los detalles y la complejidad y mostramos solo lo esencial.



Esta técnica reduce la complejidad y también aísla el impacto de los cambios en el código. Con la herencia podemos eliminar el código redundante y con el polimorfismo podemos refactorizar. Declaraciones en caso de cambios.


Comentarios

Entradas más populares de este blog

Ejemplo de Entrevista Psicológica

Aportaciones de Kant a la Psicología.

La Ética en Psicoterapia