Marcando la diferencia

Construye Clases con Clase


Construye Clases con Clase

(1)     Segmento de Datos  –> Estructura de Apuntador de Clase <– Segmento de Código

Aunque la filosofía de Programación Orientada a Objetos ya tiene varias décadas de evolución y aplicación, uno se siente inspirado para crear sus propias implementaciones que de orientación a objetos, o por lo menos a las que más se les parezca en funcionamiento.

La teoría en si en cuanto a la concepción de la forma de analizar y las búsquedas de las soluciones difieren en algún aspecto al enfoque tradicional, llevándonos a estadios de pensamientos que más se parecen a nuestra forma de ver las cosas u objetos del mundo real.

La orientación a objetos encapsula en Clases el segmento de datos y el segmento de código en una sola estructura, la cual podemos manipular de forma transparente y ordenada.

Existe un sinfín de herramientas de diseño y lenguajes orientados a objetos que facilitan el trabajo abstrayendo los detalles técnicos para los desarrolladores.

Como los detalles de implementación puramente técnicos de las clases y objetos están manejados por el motor de clases, ya que están encapsulados. Solo se permite trabajar con sus interfaces correspondientes.

Además de las estructuras especiales creadas, se necesita de un motor que pueda administrar las locaciones y espacios de memorias correspondientes, ya que las estructuras de clases no son estáticas sino que son dinámicas, por tal motivo necesita un gestor de clases.

Parte de la tarea del gestor o motor de clases corresponde en crear espacios de memorias dinámicas administrando los apuntadores correspondientes a los segmentos de códigos y datos de forma como una unidad.

Cuando se crea un objeto (o se instancian)  a partir de las definiciones de clases, lo que se está haciendo es crear estructuras de datos que contienen apuntadores a los segmentos de datos y de código que también son creados, y apuntados correctamente hacia la estructura que se ha creado.

El motor de clases es el responsable de crear estos objetos, instanciarlos, crear listas de objetos, manejar la colección de espacios no utilizados y reutilizados para la administración eficiente del espacio de memoria que siempre es limitado.

Para el caso de herencias o polimorfismos, que son conceptos que a veces son un poco difíciles de comprender de buenas a primeras. Es en sí, el cambio en la mentalidad de desarrollo, con la práctica se puede ir viendo.  En la parte encapsulada tienen muchas partes en común pero a nivel conceptual son distintos.

Al aplicar herencia lo que se está haciendo es crear en una nueva estructura, un apuntador a una clase, que ya lo habíamos definido previamente, por lo tanto lo que se hace es apuntar a la estructura de la clase que es al fin y al cabo una estructura que contiene segmento de código y datos.

En otras palabras, una estructura que contiene apuntadores a segmento de código y datos es una clase, por otro lado para efectos de realizar la herencia lo que hacemos es simplemente volver a apuntar a la estructura de clases que ya fue definida, y para el caso de que se necesiten agregar otro segmento de códigos o datos mediante los apuntadores a estos segmentos de códigos/datos, que su propio nombre lo indica como “Agregación”.

Visto que se pueden una vez definidos las clases y sus derivaciones mediante los apuntadores, lo que se puede realizar es reemplazar estos segmentos de códigos/datos por otros. Esto da lugar a lo que se conocen como over -readings o over-loadings, es decir se pueden realizar nuevas definiciones de estos segmentos  e incluso da lugar al polimorfismo.

El carácter dinámico aportado por los apuntadores y el motor de clases posibilita que en tiempo de ejecución podamos asignar o reasignar comportamientos distintos a varios niveles de nuestras definiciones y teniendo en cuenta los datos y bloques a los cuales nos queremos referir. El motor de clases es responsable de evaluar a qué nivel de la estructura corresponde y por tal motivo operar sobre ellos.

La herencia o el polimorfismo engendran en sí mismo  la capacidad de poder ser manejados correctamente por los apuntadores a las estructuras de clases que ya fueron definidas y que son gestionadas correctamente por el motor de clases.

Aunque abundan implementaciones que son motores de clases, es buena práctica poder realizar por ejemplo en leguaje C, estándar, implementaciones que contengan motores de clases, como lo hace su evolución C plus plus, por ejemplo.

Que debe contener el motor de clases,  primeramente definir formas para crear clases, donde la implementación debe gestionar las locaciones de memorias y espacios correspondientes, luego asignar estas estructuras en forma dinámica, sabiendo a qué nivel  de jerarquía nos estamos refiriendo, el gestor de clases debe tener la capacidad de poder asignar valores y entregarlos para su uso como así también ejecutar el segmento de códigos correspondientes.

Se acuerdan cuando en post anteriores les había explicado el funcionamiento de los vectores de interrupciones, en el se pueden asignar dinámicamente los segmentos de códigos y de datos, que son ejecutadas por la BIOS o el mismo sistema operativos/aplicaciones.   Es simpático encontrar que la orientación a objetos y los vectores de interrupción salvando las diferencias funcionan casi de la misma forma. Por eso decirles que lo que se plantea como algo revolucionario no es más que mejoras a las concepciones anteriores.  Vale, que ya les había explicado los vectores de interrupciones y ahora el manejo de clases, que podemos ir hilando para que vayamos comprendiendo este maravilloso mundo de las cosas que podemos hacer.

Con ese símil que les indique ya pueden comprender como pueden coexistir el mundo de los segmento de código y datos, solo que en este caso le llamamos clases.

Evidentemente mejorando las estructuras y realizando un buen motor de clases podemos desarrollar una buena herramienta que denominamos CONSTUIR CLASES CON CLASE!

Un agregado importante no tiene precio, con la concepción de orientación a objetos, se ha planteado una nueva forma de ver las cosas, tanto en la parte de desarrollo como en la parte del ciclo de vida orientado a objetos de las definiciones hasta las implementaciones de productos comerciales, académicos y de carácter científicos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s