<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-25024486</atom:id><lastBuildDate>Wed, 21 Feb 2024 02:12:26 +0000</lastBuildDate><title>Investigación e ingenio</title><description>Blog sobre programación, diseño gráfico, investigación y todo lo relativo al desarrollo de aplicaciones software y soluciones web.</description><link>http://prograros.blogspot.com/</link><managingEditor>noreply@blogger.com (Fernando)</managingEditor><generator>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-4917117083111454235</guid><pubDate>Fri, 13 May 2011 20:40:00 +0000</pubDate><atom:updated>2011-05-13T18:19:10.240-03:00</atom:updated><title>Lógico o físico, esa es la cuestión.</title><description>&lt;span style="font-family:arial;"&gt;Antes que nada holaaa, la verdad es que hacia mucho que no posteaba.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Bueno pero aquí estoy de nuevo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Estaba leyendo mi último post que trataba sobre el tema de las DLL's y de ahí el título de este post.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;¿Cuál es la difrencia entre lógico y físico?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 102, 255);"&gt;Lógico&lt;/span&gt; tiene que ver con lo conceptual, forma parte de la solución a nivel de concepto, de idea. Se llama así porque tiene que ver con la lógica que se sigue en la resolución del problema.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 102, 255);"&gt;Físico&lt;/span&gt; tiene que ver con lo tangible, je siempre y cuando seamos suficientemente imaginativos como para pensar a un archivo en el rígido, como algo que se puede tocar.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Una DLL forma parte del mundo físico, porque en el rígido habrá algo como &lt;span style="font-weight: bold; font-style: italic;"&gt;MiDLL.dll&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, un archivo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Ajá, ¿pero cómo se relaciona con lo lógico?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Con el contenido. Lo que hay adentro de la DLL es algo lógico escrito en algún lenguaje con el cuál pueda escribirse una DLL, también llamada librería.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Ok, ok, ¿pero específicamente que podría contener?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Bueno una DLL podría contener; todas las clases de una capa de la aplicación, en ese caso la capa (lógica) coincide con la DLL (física), también podría tener todas las clases necesarias para realizar un caso de uso, todas las clases necesarias para dar soporte a un conjunto de casos de uso, por ejemplo la gestión de clientes, o las clases necesarias para algún servicio, etc..&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Uhhhh, muy técnico y hacia mucho que no posteaba, me agoté.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Bueno voy a seguir comiendo mis churros y disfrutar de la lluvia, la seguimos en la próxima que prometo que va a ser dentro de este año, jajajajaja. Chauuu.&lt;/span&gt;</description><link>http://prograros.blogspot.com/2011/05/logico-o-fisico-esa-es-la-cuestion.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-8805426027246930381</guid><pubDate>Sun, 13 Jan 2008 15:48:00 +0000</pubDate><atom:updated>2008-01-13T14:59:30.410-02:00</atom:updated><title>Ser solidario, compartir</title><description>&lt;span style="font-family:arial;"&gt;Holaaaaa, aca estoy de nuevo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Porqué, ser solidario y compartir?. Es un poco la idea promotora de la tecnología de componentes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;A ver. Supongamos que nos esforzamos y escribimos un trozo de buen código, hicimos pruebas unitarias, pruebas de integración, etc. (mmmm en algún momento tocaremos estos temas).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Como nos salió tan lindo estaría bueno tratar de reescribirlo para la próxima o sea, cuando necesitemos algo parecido, usar directamente este código. Esto ya vimos que se llamaba reutilización.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Por eso es buena idea cuando nos encontramos con alguna funcionalidad que sabemos o intuímos que puede ser útil en otro momento, tratar de escribir el código de manera tal que pueda funcionar en otro contexto o sea, bajo otras circustancias, bajo otra demanda.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Así nos vamos haciendo nuestra propia biblioteca de código, guardada en un carpetita todo ordenado y bonito como corresponde.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Je, bárbaro. Cuando sea necesario nuevamente, qué hacemos, cortamos y pegamos ese código?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Mmmmmmm la verdad que sería una forma de reutilización pero, media precaria, digna de un estudiante de salita de 5 años. :).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Mas profesional sería hacer un &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;componente&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Ehhhhh?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Si si, ese código lo ponemos en una clase juntos con otros códigos que se nos ocurran y armamos un componente.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Ojo debemos tener algunas cosas en cuenta, una clase tiene que ser coherente (esto es el &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;patrón de diseño de alta coherencia&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;), esto significa que debe hacer pocas cosas y estas pocas cosas deben estar de alguna manera relacionada.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Por ejemplo, hacemos una clase y le ponemos la operación &lt;strong&gt;ImprimirListado(...)&lt;/strong&gt;, y también le ponemos la operación &lt;strong&gt;GrabarRegistro(...)&lt;/strong&gt; no resultan muy relacionadas ambas operaciones dado que una plantea la salida de información a granel, formateada hacia la impresora y la otra operación plantea el almacenamiento permanente de información podríamos decir atómica sobre alguna forma de almacenamiento.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Nuestra clase sería mas coherente si contuviera las operaciones; &lt;strong&gt;ImprimirListado(...)&lt;/strong&gt;, &lt;strong&gt;ImprimirEncabezado(...)&lt;/strong&gt;, etc. y otra clase que contuviera las operaciones; &lt;strong&gt;GrabarRegistro(...)&lt;/strong&gt;, &lt;strong&gt;RecuperarRegistro(...)&lt;/strong&gt;, etc.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Ok las clases son lo que antes hemos llamado componentes?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Si pero, el empaquetamiento físico o sea, el archivo donde están contenidas es un Exe Estandar?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;No.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;La manera mas fácil de hacer un componente es, al abrir el proyecto seleccionar &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;DLL ActiveX&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; y ahí poner nuestras clases.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;O sea, que en una DLL podemos tener una o más clases.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Estas clases, como ya vimos, tendrán operaciones públicas y operaciones privadas. Cualquier otra aplicación que use la DLL (aplicación &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;cliente&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;), sólo podrá usar las operaciones públicas de cada una de las clases, siempre que la misma se vea desde afuera de la DLL.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;De ahí la separación de operación y método.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Mientras no cambiemos la signatura de la operación, su definición, el cliente ni se entera. Esto permite mejorar el día de mañana el algoritmo, cambiar el método, y otras cuantas cosas más que iremos viendo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;También hay que tener cuidado con algunas cosas, por ejemplo, nunca compilar una DLL hasta que las clases y sus interfaces sean estables porque haremos un chiquero en el registro de Windows y ademas tendremos problemas de incompatibilidad con los clientes viejos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;De ahí el título de este posteo, un componente comparte con el resto del mundo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Ahhhh antes de terminar me olvidaba, otra cosa buena de la tecnología de componentes es que no importa cómo se implementó el componente, en nuestro caso la DLL. Esto significa que, por ejemplo, la escribimos en VisualBASIC y la usamos con cualquier lenguaje que pueda cargar una DLL.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Es interesante.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Bueno la sigo la próxima porque hace mucho calor, chauuuu.&lt;/span&gt;</description><link>http://prograros.blogspot.com/2008/01/ser-solidario-compartir.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-3061232929026875805</guid><pubDate>Thu, 08 Nov 2007 16:26:00 +0000</pubDate><atom:updated>2007-11-08T13:29:57.430-03:00</atom:updated><title/><description>&lt;span style="font-family:arial;font-size:180%;color:#ff0000;"&gt;&lt;strong&gt;Hola Amigos&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;color:#000000;"&gt;No los abandoné. Ocurre que no sé porqué, no podía entrar a editar mi blog.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Bueno de ahora en más volveré con estos temas, creo que interesantes, sobre programación.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Bueno saludos a todos y en estos días subo material nuevo.&lt;/span&gt;</description><link>http://prograros.blogspot.com/2007/11/hola-amigos-no-los-abandon.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-3426539826352897606</guid><pubDate>Wed, 16 May 2007 20:27:00 +0000</pubDate><atom:updated>2007-05-16T17:54:45.005-03:00</atom:updated><title>Pongámonos más técnicos</title><description>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:arial;"&gt;Hasta acá ya hemos visto unas cuantas cosas de objetos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Qué cosas?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Bueno que es una clase, una instancia, un atributo, un método, cómo implementar todo esto en VisualBASIC y ya veremos cómo hacerlo en otros lenguajes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;La idea en este Post es dar algunas definiciones más técnicas ahora que ya estamos mas conocedores del tema, así que ahí van:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;&lt;span style="font-style: italic;"&gt;Clase&lt;/span&gt;:&lt;/span&gt; define un conjunto de objetos que comparten los mismos atributos, las mismas operaciones, las mismas relaciones y la misma semántica. (¿misma semántica?, tomalo como el mismo significado).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;&lt;span style="font-style: italic;"&gt;Instancia&lt;/span&gt;:&lt;/span&gt; un elemento específico de los definidos en una clase. Por ejemplo, podemos tener la clase Persona (habla de un conjunto) y la instancia Juancito (habla de un elemento del conjunto).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;&lt;span style="font-style: italic;"&gt;Atributo&lt;/span&gt;:&lt;/span&gt; propiedad de una clase que define un conjunto de valores que puede tener una instancia del atributo. Ehhhh?. Fácil un atributo es una propiedad que tiene cualquier instancia que pertenezca a la clase y cada una de esas instancias tendrá su propio valor para ese atributo. Por ejemplo nuestra clase Persona tiene un atributo llamado nombre, una instancia podrá tener el calor "Juan" para ese atributo y otra instancia el valor "Ana".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;&lt;span style="font-style: italic;"&gt;Operación&lt;/span&gt;:&lt;/span&gt; define un servicio de la clase, que puede ser requerido a cualquier instancia de la clase. Esto sería....? Algo que cualquier instancia de la clase puede hacer. Acá cabe hacer una aclaración hay una diferencia entre operación y método. Operación se refiere a la signatura o sea a la definición por ejemplo &lt;span style="font-weight: bold;"&gt;ExtraerPromedio(Nota1: real, Nota2: real):real&lt;/span&gt;, oops. Non calentarum largum vivirum esto significa que la operación se llama &lt;span style="font-weight: bold; font-style: italic;"&gt;ExtraerPromedio&lt;/span&gt; y que devuelve un resultado que será del tipo real y que recibirá dos parámetros, los que están dentro del paréntesis, que se llaman &lt;span style="font-weight: bold; font-style: italic;"&gt;Nota1&lt;/span&gt; y &lt;span style="font-weight: bold; font-style: italic;"&gt;Nota2&lt;/span&gt; y ambos serán también del tipo real. Recordemos que el significado matemático de los dos puntos es "es" así que poner Nota1:real sería los mismo que poner Nota1 es real.&lt;br /&gt;¿Ok y el método que será?. Será la implementación, el código que habrá detrás de ExtraerPromedio y que en definitiva hará algo.&lt;br /&gt;¿A qué se debe que la compliquen así?. Se separa el concepto de operación y método para, entre otras cosas, poder usar polimorfismo. Esperá no te cuelgues con el cable del mouse, ta vamos a ver de que se trata.&lt;br /&gt;Además las operaciones forman parte de la interfaz y los métodos no.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;&lt;span style="font-style: italic;"&gt;Interfaz&lt;/span&gt;:&lt;/span&gt; define un conjunto de operaciones que especifica un servicio que puede proporcionar una clase o componente. O sea, son todas las operaciones públicas que muestra una clase o componente. Bah, en realidad no es tan así porque estos clasificadores (clases y componentes) pueden mostrar más de una interfaz pero, por hoy ya fué bastante.&lt;br /&gt;&lt;br /&gt;Listo nos vemos en la próxima chau, chau.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;</description><link>http://prograros.blogspot.com/2007/05/pongmonos-ms-tcnicos.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-117166943524214335</guid><pubDate>Fri, 16 Feb 2007 23:06:00 +0000</pubDate><atom:updated>2007-02-16T20:43:55.963-03:00</atom:updated><title>Implementaciones IV</title><description>&lt;span style="font-family:arial;"&gt;Holaaaaaa. Si ya sé pensaban que había abandonado el blog. Naa.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Anduve un poco ocupado y además, los chicos de Arnet me tuvieron más de un mes sin servicio, y eso que contrate el servicio más grande que ofrecen. Estos chicos... Deberían poner una verdulería en lugar de dedicarse a la tecnología. Mmmmmm, ¿podrán manejar una verdulería?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Bueno pero vamos al tema de este post. Repasemos un poco, estabamos con las propiedades.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Habíamos visto que básicamente teníamos dos formas de codificar una propiedad para una clase.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;La primera, y la más fácil y precaria, era a través de una variable pública cuyo nombre se transformaba directamente en la propiedad del objeto.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;La segunda, un poco menos fácil pero más seria, era mediante la definición previa de una variable privada y las definiciones posteriores de dos métodos Property; uno para leer el valor de la propiedad (&lt;strong&gt;&lt;em&gt;GET&lt;/em&gt;&lt;/strong&gt;) y otro para poner un valor en la propiedad (&lt;strong&gt;&lt;em&gt;LET&lt;/em&gt;&lt;/strong&gt;).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Bien, los que ya han tenido algunas horas de desvelo programando, habrán observado que hay algunos objetos que tienen propiedades que solamente pueden leerse y otros propiedades que solamente pueden escribirse.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Oops y esto ¿cómo se hace?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Es muy sencillo, si queremos hacer una propiedad de sólo lectura debemos definir solamente el procedimiento &lt;strong&gt;&lt;em&gt;Property GET&lt;/em&gt;&lt;/strong&gt; así el cliente que use nuestra clase, verá la propiedad en la lista automática de miembros pero solamente podrá leerla.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Mmmmmmmm veamos un ejemplo. Supongamos que a la clase Persona que ya habíamos mencionado en otro post le queremos agregar la propiedad FechaDeNacimiento obviamente se tratará de una propiedad que el cliente debe poder usarla tanto para leer (consultar la fecha de nacimiento de la persona) como para escribir (asignar la fecha de nacimiento de la persona). Bárbaro eso ya sabemos como hacerlo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Que linda nos está quedando nuestra clase Persona. Nos queda tan linda que podríamos mejorla un poco más, por ejemplo podríamos darle un servicio extra al cliente indicando la edad de la persona.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Bien, pensemos un poco. La fecha de nacimiento es algo que no cambia, para cada persona, permanece fija. La edad es un valor dinámico, cambia a cada momento.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Ahora bien, sabiendo la fecha de nacimiento de una persona y teniendo algunas funciones de manejo de fechas, no resultaría difícil hacer alguna rutinita, algún algoritmo, que permita calcular la edad.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Uhhhhhhhhhh que bien venimos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Sigamos pensando, la edad la calculamos a partir de la fecha de nacimiento entonces, ¿debe implementarse como una propiedad de escritura/lectura?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;No, porque el valor no debe ser ingresado sino que como dijimos se calcula. Esto se conoce como valor derivado.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Ya que no hace falta ingresarlo solamente necesitamos escribir el código de una propiedad de sólo lectura. Algo así:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Public Property Get&lt;/span&gt; Edad() &lt;span style="color:#3366ff;"&gt;As Integer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;  Edad = m_intEdad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;color:#3366ff;"&gt;End Property&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Obviamente a m_intEdad se le habrá calculado el valor apropiado, previamente.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Cómo no existe el procedimiento &lt;strong&gt;&lt;em&gt;Property Let&lt;/em&gt;&lt;/strong&gt; el cliente no podrá acceder a Edad para ponerle un valor, nuestro amigo VisualBASIC le hará notar el error.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Menos frecuente pero también posible es hacer propiedades de sólo escritura. Sería bastante parecido a lo que hicimos pero en lugar de implementar el procedimiento &lt;strong&gt;&lt;em&gt;Property Get&lt;/em&gt;&lt;/strong&gt; solamente implementaríamos el procedimiento &lt;strong&gt;&lt;em&gt;Property Let&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Bueno ya vimos algo más de las propiedades pero la seguimos en la próxima.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Prometo no colgarme y postear mas seguido. Chauuuuu.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;Nota:&lt;/strong&gt; En la implementación de la propiedad Edad que puse anteriormente, se supone que el valor de la edad ya fue calculado. ¿Donde se debe calcular?. Uno de los patrones de diseño que se aplica es el &lt;strong&gt;&lt;em&gt;Patrón Experto&lt;/em&gt;&lt;/strong&gt;, el mismo dice que cada quién se debe encargar de lo que le corresponde (dicho de entrecasa). Mmmmmm si aplicamos esto, la edad debería calcularse entonces cuando se necesita o sea, cuando es requerida o sea, en el mismo código de la propiedad y en todo caso buscar la manera que una vez calculada no vuelva a hacerse el cálculo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Si ya sé que también la puedo calcular al ingresar la fecha de nacimiento y vaya uno a saber en que otras partes del código pero bue, son detalles que van mejorando el diseño. La verdad no escribí el código para calcular el valor de m_intEdad dentro del &lt;strong&gt;&lt;em&gt;Property Get&lt;/em&gt;&lt;/strong&gt; por fiaca. Jajajaja, nos vemos la próxima&lt;/span&gt;</description><link>http://prograros.blogspot.com/2007/02/implementaciones-iv.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-115396280002853554</guid><pubDate>Thu, 27 Jul 2006 00:38:00 +0000</pubDate><atom:updated>2006-07-26T22:48:28.683-03:00</atom:updated><title>Implementaciones III</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Con esta humedad lo único que dan ganas es de escribir sobre programación.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Jajajajajaja.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;La verdad es que anduve un poco ocupado y estaba atrasado con darle al teclado.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Pero buen, veamos si puedo ir poniendome al día.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Ya habiamos visto como hacer para que una clase tenga una propiedad, creando una variable y declarandola del tipo &lt;strong&gt;&lt;em&gt;Public&lt;/em&gt;&lt;/strong&gt; dentro del código de la clase.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Esa es la forma más sencilla de hacer esta tarea pero, en este caso, lo más sencillo no es lo mejor.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;¿Por qué?. Porque cuando un objeto cliente le asigna un valor a la variable no tenemos forma de controlar, validar ni manipular dicho valor.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Pensemos como ejemplo la clase Persona con una variable pública llamada Apellido. Ni bien se le asigna un valor a esa variable no hay manera de operar sobre él. Supongamos por ejemplo que, independientemente de lo que el usuario escriba, deseamos que el apellido esté siempre en mayúscula. En este caso no hay forma de hacerlo.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Veamos entonces una manera más versátil y profesional de escribir el código correspondiente a una propiedad de una clase.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;Propiedades de las clases, la forma correcta.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Lo primero que debemos recordar es que lo definido como privado dentro del código de la clase, pertenece exclusivamene a ella y no hay manera que de acceder a ello desde afuera de la misma.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Entonces, para cada propiedad definimos en la sección de declaraciones, para que tenga una visibilidad de módulo, una variable privada.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;En el ejemplo planteado anteriormente nos quedaría algo así:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Private m_strApellido As String&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Al ser privada no está disponible para el exterior de la clase.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;¿Cómo usamos esa variable entonces?.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Tenemos que tener en cuenta que pueden existir dos posibilidades, que necesitemos asignarle un valor a ella o sea, guardar algo en ella o bien, que necesitemos recuperar, leer, el valor que ella contiene.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Entonces debemos definir dos procedimientos &lt;em&gt;especiales&lt;/em&gt; para estas dos posibilidades. Estos procedimientos son los Property. Je!! el nombre los vende de que se trata de procedimientos de propiedad no?.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;La sintaxis sería algo como lo siguiente:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Public Property Get&lt;/span&gt; Apellido() &lt;span style="color:#3366ff;"&gt;As String&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Apellido = m_strApellido&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;color:#3366ff;"&gt;End Property&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Public Property Let&lt;/span&gt; Apellido(&lt;span style="color:#3366ff;"&gt;ByVal&lt;/span&gt; vNewValue &lt;span style="color:#3366ff;"&gt;As String&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;m_strApellido = vNewValue&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;color:#3366ff;"&gt;End Property&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Cosa rara che. Naa.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Primero hay dos porque uno sirve para recuperar el valor y otro para asignarle un valor.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;El &lt;strong&gt;&lt;em&gt;Get&lt;/em&gt;&lt;/strong&gt;, recupera un valor y usa el mismo nombre de la propiedad como contenedor, si nos fijamos en el código pone en Apellido el contenido de m_strApellido.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;El &lt;em&gt;&lt;strong&gt;Let&lt;/strong&gt;&lt;/em&gt;, asigna el valor. ¿Cuál?. El que recibe en &lt;strong&gt;&lt;em&gt;vNewValue&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Un cliente que use la clase persona, para asignarle un valor al apellido, escribir un código como el siguiente:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt; objPers &lt;span style="color:#3366ff;"&gt;As&lt;/span&gt; Persona&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Set&lt;/span&gt; objPers = &lt;span style="color:#3366ff;"&gt;New&lt;/span&gt; Persona&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;objPers.Apellido = "Perez"&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Muy sencillo.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Para usar tal valor, en un cuadro de mensajes por ejemplo deberá escribir un código mas sencillo todavía.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;MsgBox&lt;/span&gt; objPers.Apellido&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Una ganga.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;¿Si quisieramos que el apellido esté siempre en mayúscula?.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Solamente debemos modificar el procedimiento Property Let de la siguiente manera:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3366ff;"&gt;Public Property Let&lt;/span&gt; Apellido(&lt;span style="color:#3366ff;"&gt;ByVal&lt;/span&gt; vNewValue &lt;span style="color:#3366ff;"&gt;As&lt;/span&gt; &lt;span style="color:#3366ff;"&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;m_strApellido = &lt;span style="color:#3366ff;"&gt;UCase&lt;/span&gt;(vNewValue)&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;End Property&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;color:#000000;"&gt;Nada y además el cliente ni se entera.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Como pueden ver el tema de las propiedades se pone bueno así que la seguimos en la próxima.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Nos vemos.&lt;/span&gt;&lt;/div&gt;</description><link>http://prograros.blogspot.com/2006/07/implementaciones-iii.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-115178727630676989</guid><pubDate>Sat, 01 Jul 2006 20:30:00 +0000</pubDate><atom:updated>2006-07-01T17:54:36.366-03:00</atom:updated><title>Implementaciones II</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bueno es sábado a la tarde, hay solcito y no hace tanto frío.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;La verdad me dieron ganas de escribir, entonces que mejor que avanzar un poco más en la manera de hacer objetos con Visual BASIC.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Ya habíamos visto una manera precaria de implementar atributos o propiedades, obviamente el decir que es precaria implica que hay otras mejores. Si si y ya las vamos a ver.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Lo que hoy vamos a ver son los métodos.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;¿Qué son los métodos?.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Los métodos son las implementaciones de las operaciones. Mmmmm dificil che.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;No tanto, conceptualmente, se separa las operaciones o sea, la definición de su signatura (su nombre, el nombre y tipo de los argumentos de entrada y el nombre y tipo de valores devueltos) de sus métodos o sea, el código que permite que la operación haga algo.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Así por ejemplo si defino un procedimiento de la siguiente manera:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Public Sub&lt;/span&gt; BuscarCliente(IDCliente &lt;span style="color:#3366ff;"&gt;As Long&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Esa es una operación de la clase, el código dentro del procedimiento, que es el que en realidad hace algo, será el método.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;No era tan difícil. Pero, ¿para qué la complican tanto?.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Ya lo vamos a ir viendo.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Una vez que defino ese procedimiento, cuando instancio un objeto de la manera que ya expliqué mediante una variable, al poner el operador punto aparece BuscarCliente entre la lista de miembros desplegable o sea puede ser usado por cualquier código cliente que use el objeto.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Esto explica el motivo de separar las operaciones de los métodos, un cliente solamente ve la signatura de la función o sea la operación y podemos cambiar, mejorar o corregir el método sin que el cliente se entere. La verdad que está polenta.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Este es otro ejemplo de encapsulamiento todo lo que sea interno de la clase, los clientes no lo ven.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Hablando de interno.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;¿Qué ocurre si necesitamos hacer alguna función o algún método y no queremos que los clientes lo usen?.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Muy sencillo lo declaramos como Private en lugar de Public. Debemos recordar que todo lo que sea Private podrá ser usado solamente dentro de la clase.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Es muy normal definir funciones o procedimientos privados que hacen algún trabajo de soporte al trabajo principal que se espera de la clase.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Como norma solamente se debe dejar público aquellas funcionalidades que el sentido común dice que nuestra clase debe tener, técnicamente esto se expresa que las clases deben ser cohesivas o sea que sus operaciones y atributos deben estar fuertemente relacionados.&lt;/span&gt;&lt;/div&gt;</description><link>http://prograros.blogspot.com/2006/07/implementaciones-ii.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-115102073033009557</guid><pubDate>Thu, 22 Jun 2006 23:43:00 +0000</pubDate><atom:updated>2006-06-22T20:58:50.373-03:00</atom:updated><title>Oops I</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Me olvidaba.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;En este caso Oop no son iniciales de nada "Orientado a Objetos" solamente significa que me estaba olvidando.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;En VisualBASIC, cada clase se guarda en su propio archivo de disco. Para ello usa como nombre de archivo el que le hemos dado a la clase y como extensión Cls (de Class obvio).&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Idea.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Cuando empezamos a escribir nuestras propias clases y le vamos tomando la mano a la filosofía de la programación orientada a objetos empezamos a hacerlas más genéricas o sea, que se pueden usar en un mayor número de oportunidades. Esto es lo que decía al principio de reutilización.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;En este caso no es mala idea guardarlas en una carpeta aparte que podemos llamar con algún nombre brillante, por ejemplo; "Biblioteca de clases", y las cargamos desde allí en futuros proyectos.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;¿No traen problemas las versiones?.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;¿Puedo meter las clases en una DLL?.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bueno che, esto es una idea nada más. Ya vamos a ir viendo esos temitas.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hasta la próxima.&lt;/span&gt;&lt;/div&gt;</description><link>http://prograros.blogspot.com/2006/06/oops-i.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-115085409625110650</guid><pubDate>Wed, 21 Jun 2006 00:19:00 +0000</pubDate><atom:updated>2006-06-22T21:04:37.116-03:00</atom:updated><title>Implementaciones I</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Implementación en Visual BASIC.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bueno después de tanta teoría creo que vendría bien algo de práctica.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Como ya mencioné en varias oportunidades, la tecnología de objetos abarca una gran variedad de aspectos. La estrategia que aborde en estos artículos es ir atendiendo a tales aspectos en forma paulatina a medida que se vayan haciendo necesarios. Los que saben dicen que esta técnica se llama aprendizaje significativo.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Entonces, debido a que es nuestra primera aproximación a alguna forma de implementación de clases y objetos, comenzaremos modestamente viendo clases y objetos en VisualBASIC.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;La gente que "sabe" siempre dijo que VisualBASIC no esta hecho para trabajar con objetos pero, desgraciadamente me enteré de ello después de muchos años de trabajar con objetos en VisualBASIC, deberían haberme avisado antes.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;No es un lenguaje orientado a objetos, eso es verdad, pero hasta el momento nunca tuve problemas para implementar, incluso, hasta algunos &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;patrones de diseño&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; bastantes complejos.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Una Clase.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Dada la interfaz amigable del lenguaje que nos ocupa, resulta sencillo crear una clase. Para ello debemos ir a la opción de menú &lt;strong&gt;&lt;em&gt;Proyecto&lt;/em&gt;&lt;/strong&gt; y en ella seleccionar &lt;strong&gt;&lt;em&gt;Agregar módulo de clase&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Nos presentará en nuestra pantalla entonces un cuadro de diálogo con algunas opciones y de ellas nosotros eligiremos la primera, &lt;strong&gt;&lt;em&gt;Módulo de clase&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Entonces se agregará una nueva carpeta en el explorar del proyecto identificada con la etiqueta &lt;em&gt;&lt;strong&gt;Módulos de clase&lt;/strong&gt;&lt;/em&gt;. En esta carpeta se iran incorporando las otras clases que contenga nuestro proyecto.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Primera cosa rara, solamente se muestra la ventana de código para una clase. &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Esto ocurre porque una clase no tiene interfaz gráfica&lt;/span&gt;&lt;/strong&gt; como los formularios.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;En la ventana de propiedades veremos tres propiedades, por ahora nos interesaremos solamente por la primera, el nombre. Siempre a las clases debemos ponerle un nombre que sea representativo del conjunto de objetos del cuál será la plantilla. Así, si la clase será la plantilla de un grupo de personas es lógico que la misma se llame Persona.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Ya está, tenemos una clase.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;¿Qué hace?. Nada. Bueno paciencia vamos de a poco.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;Los atributos de nuestra clase.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Hay dos formas de que una clase tenga atributos. Una fácil y una un poco más complicada.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Como siempre la solución fácil es la más limitada. Empezaremos con la fácil.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Supongamos que toda persona tendrá un apellido y un nombre, entonces en la ventana de código de la clase en la sección de declaraciones definiremos dos variables de la siguiente manera:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Public&lt;/span&gt; Apellido &lt;span style="color:#3366ff;"&gt;As String&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Public&lt;/span&gt; Nombre &lt;span style="color:#3366ff;"&gt;As String&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Listo, nuestra clase ya tiene dos atributos a los cuales podemos acceder desde afuera. ¿Porqué?. Todo lo que en una clase declaremos como público, ya sean variables, funciones o procedimientos, formarán parte de la &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;interfaz&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; de la misma.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;¿Qué es una interfaz?.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Una interfaz exporta la funcionalidad de, en este caso, la clase o sea, define para qué puede usarse la clase desde afuera.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Todo lo que en la clase sea declarado como privado no habrá manera que sea accedido desde afuera de ella.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;Instanciación de nuestra clase.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Recordemos que la clase es la plantilla de un conjunto de posibles objetos, un programa usará un objeto específico de determinada clase, Uff, se está complicando.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;En el programa que usa objetos de la clase Persona debemos crear instancias de objetos Persona, para ello primero declaramos variables del tipo de clase que vamos a utilizar y después &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;instanciamos&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; el objeto.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;En código quedaría algo así:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt; objPers &lt;span style="color:#3366ff;"&gt;As Persona &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Crea al objeto&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#3366ff;"&gt;Set&lt;/span&gt; objPers = &lt;span style="color:#3366ff;"&gt;New&lt;/span&gt; Persona &lt;span style="color:#ff0000;"&gt;'Instancia al objeto&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Ahora sí ya podemos usar el objeto objPers, por ejemplo:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;objPers.Apellido = "PEREZ"&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Después de poner el nombre de la instancia del objeto y el operador punto, se despliegan automáticamente todos los miembros de la interfaz.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Bueno no hemos creado algo que figure en la historia de la informática pero es nuestro primer acercamiento práctico y creo que seguir avanzando, por ahora, solamente incrementará las horas en el Analista.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Obviamente queda mucho por ver pero eso es solamente un pretexto para seguirla.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Un abrazo.&lt;/span&gt;&lt;/div&gt;</description><link>http://prograros.blogspot.com/2006/06/implementaciones-i.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-115006365927093573</guid><pubDate>Sun, 11 Jun 2006 21:35:00 +0000</pubDate><atom:updated>2006-06-20T22:45:55.143-03:00</atom:updated><title>Objetos III</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Veamos algunas iniciales.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bueno.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Acá estamos otra vez.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Obviamente vamos a seguir con los objetos y ya que vimos algunas cosas veamos un poco mas.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;En toda esta terminología que se usa en el universo de los objetos hay una que suena mucho y es &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;UML&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;¿Qué es UML?.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Un lenguaje, de hecho UML significa Lenguaje Unificado de Modelado, claro que en inglés.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Expliquemos un poquito más. En toda actividad es importante lograr un entendimiento entre las personas que la desarrollan, ese es uno de los objetivos de UML. Que todas las personas que usamos esta tecnología nos expresemos de la misma manera.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Así UML determina una serie de definiciones y símbolos que cualquier desarrollador debe conocer para poder comunicarse con otros desarrolladores.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Además también determina reglas para combinar esos símbolos en determinados diagramas que permiten entonces alcanzar una gran expresividad en el momento de diseñar aplicaciones.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Estos diagramas abarcan desde la estructura de un sistema (clases y subsitemas que lo componen), al comportamiento (o sea, como se hace internamente lo que se debe hacer) sin dejar de lado otras cuestiones como la configuración y distribución (o sea, las computadoras que harán de servidores y de clientes en la aplicación, los nodos).&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Ya que estamos esa es otra cualidad de los objetos, en una misma entidad conjugan estructura de datos y comportamiento. Como ven nos vamos poniendo técnicos&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;¿Es importante conocer UML?.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Si. Aca cabe hacer una aclaración es importante para poder lograr expresarnos, organizarnos y entendernos con otros pero no es suficiente saber UML para poder diseñar orientado a objetos.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hacen falta algunos conocimientos más como ser alguna metodología de diseño como puede ser &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;OMT&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; (un poco antigua), &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;RUP&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; (mas nueva) y algunas cositas mas como ser &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;patrones&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;, etc..&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bueno como ven son muchas cosas y las vamos a ir viendo de a poco.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Saludos para todos y el que lo desea que escriba sobre cualquier tema de los que promueven a este blog.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hasta la próxima.&lt;/span&gt;&lt;/div&gt;</description><link>http://prograros.blogspot.com/2006/06/objetos-iii.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-114859790204982342</guid><pubDate>Thu, 25 May 2006 22:35:00 +0000</pubDate><atom:updated>2006-05-25T20:31:37.356-03:00</atom:updated><title>Objetos II</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:arial;color:#ff0000;"&gt;&lt;strong&gt;Sigamos con los objetos.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Bueno ya estuvimos viendo algunas cositas del tema objetos.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Metamonos un poco más en cuestiones técnicas.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Cuando entramos al mundo de los objetos, entre los primeros conceptos que aparecen están los de &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;clase de objeto&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; e &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;instancia de objeto&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;. Estos términos, explicados por muchos profesores se convierten en extrañas cosas muy esotéricas, abstractas que han generado los dioses del Olimpo para torturar la mente de los mortales haciendolos sentir poca cosa por no entender a los mismos.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;La verdad es que nada tiene de complicado y los que lo complican sólo puede ser porque ellos no lo comprenden en realidad o bien porque les dá status de investigadores serios, mmmmm.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;¿Qué es una clase?.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;La definición correcta es que define un conjunto de objetos con una comunidad de semántica, atributos, comportamiento y relaciones con otros objetos. ¿Y qué significa esto?. Fácil una clase es la plantilla que define a un conjunto de objetos concretos.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Por ejemplo, la clase Persona define a un conjunto de objetos concretos (Juancito, Pedrito, Ana, etc.) pués ocurre que todos ellos tienen características comunes (atributos) como ser; Apellido, Nombre, Fecha de nacimiento, DNI, etc.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;¿Qué es una instancia?.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Más fácil todavía es uno de los elementos del conjunto definido por la clase o sea, un objeto concreto. Esto es, Juancito es una instancia de la clase Persona.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Como vemos, no estamos tratando conceptos tan elevados, un poco locos pueden ser eso sí.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;En las clases se incluyen todas las características comunes que van a tener todas las posibles instancias de la misma. Por ejemplo si la clase Persona la usaremos para representar al ciudadano común no tiene sentido que tenga el atributo (característica) Título. ¿Por qué?. Fácil porque no todas las personas tienen algún título universitario, terciario, etc.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;Che y cuando se dice objeto a secas, ¿de qué se está hablando?.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Depende puede ser de una clase o de una instancia pero, el contexto de la conversación o texto seguramente nos permitirá darnos cuenta de cuál de las dos opciones se trata.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;¿Y cuando programamos hacemos clases o instancias?.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Ambas, primero definimos la clase para poder usarla después. Más tarde en alguna parte de la aplicación que necesitemos crear un objeto concreto, específico de esa clase entonces las &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;instanciamos&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;, palabrita top que significa que hemos creado una instancia de una clase.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Bueno algo más hemos visto, espero que no haya sido una discusión filosófica sino algo maso entendible.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;La seguimos.&lt;/span&gt;&lt;/div&gt;</description><link>http://prograros.blogspot.com/2006/05/objetos-ii.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-114748778009080015</guid><pubDate>Sat, 13 May 2006 02:07:00 +0000</pubDate><atom:updated>2006-06-13T20:46:52.233-03:00</atom:updated><title>Objetos I</title><description>&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="font-family:arial;color:#000000;"&gt;¿Objetos, una moda pasajera?&lt;/span&gt; &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Hoy en día están muy de moda pero, ¿son una moda en realidad?.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;No, en mi opinión no lo son.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;He visto muchas modas informáticas pseudo-revolucionarias que, por ser solamente modas, duraron nada.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Los objetos vinieron para instalarse y no por decisión de una empresa o un grupo de investigadores trasnochados. Se instalaron por peso propio.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Ocurre que la programación orientada a objetos (POO), es lo más similar a lo que ocurre en el mundo real donde no existen funciones aisladas y con entidad propia. Lo que existe son objetos que tienen funciones parra llevar a cabo determinadas tareas y que al interactuar con otros objetos consiguen algún comportamiento combinado mucho más complejo que la suma de las posibilidades de cada objeto por separado.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Esto es sólo una perspectiva de la tecnología de objetos desde el punto de vista de un contexto global, cómo estamos tratando de diseñar e implementar aplicaciones de una manera más parecida a la realidad.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Pero existen otras perspectivas, otras miradas, de esta tecnología.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Para los informáticos la POO ofrece muchos beneficios, entre ellos podemos citar los siguientes:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;Encapsulamiento:&lt;/strong&gt; esto significa que todo lo concerniente a un objeto está "encerrado" dentro de él y el entorno, lo de afuera, no tiene manera de acceder al mismo. Si el entorno no puede acceder a él, cualquier cambio que hagamos en el código interno de un objeto no será visible desde afuera o sea, cualquier cambio que hagamos no impactará en el resto del código.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;Reutilización:&lt;/strong&gt; cuando tenemos objetos genéricos, los de las capas de servicio (esto lo discutiremos en otra oportunidad), debido a que todo lo que hacen y necesitan, está encapsulado en el propio objeto, puede volver a usarse en otra oportunidad donde lo necesitemos. Por ejemplo si tenemos un objeto que encapsula todos los datos de un cliente y su almacenamiento persistente, cada vez que tengamos la necesidad de incorporar en un sistema el concepto de cliente, podemos implementarlo volviendo a usar (reutilizando) nuestro objeto cliente, sin programar una sola línea.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;Estas son algunas de las ventajas que nos ofrecen y las cité en este momento porque para cualquiera que haya programado alguna vez una aplicación sabrá valorarlas.&lt;br /&gt;Antes de terminar creo conveniente dejar claro que es un objeto.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;Objeto:&lt;/strong&gt; cualquier concepto, cosa o abstracción con límites bien definidos y con sentido para el problema que estamos tratando. O sea, un objeto puede ser; una persona, un automóvil, una carpeta de archivos, una política de venta, un usuario, una venta, un sensor, un puesto de trabajo, etc.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;br /&gt;¿Cuáles son los objetos que debemos usar en una aplicación?&lt;br /&gt;Bueno eso dependerá de la aplicación que tenemos que diseñar y para poder determinarlos hay diversas técnicas de análisis y diseño orientado a objetos (ADOO).&lt;br /&gt;Bueno poco a poco iremos viendo algo más sobre el mundo de los objetos.&lt;br /&gt;Los saludo y que la pasen bárbaro.&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;/p&gt;&lt;/span&gt;</description><link>http://prograros.blogspot.com/2006/05/objetos-i.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-25024486.post-114368675770188586</guid><pubDate>Thu, 30 Mar 2006 02:41:00 +0000</pubDate><atom:updated>2006-03-29T23:45:57.706-03:00</atom:updated><title>Bienvenidos</title><description>&lt;span style="font-family:arial;"&gt;Hola &lt;strong&gt;Bienvenidos&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Este Blog es para la gente de cualquier edad, sexo, creencia, etc, etc..&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Lo único que nos junta es que somos apasionados por temas de programación de computadoras sea en el lenguaje que sea.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Bueno, esa es la idea, juntarnos a discutir e intercambiar ideas sobre programación, diseño gráfico, diseño de sistemas, diseño web, etc.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Como un bar pero desde nuestras compus.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Espero que se encuentren a gusto.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Un abrazo.&lt;/span&gt;</description><link>http://prograros.blogspot.com/2006/03/bienvenidos.html</link><author>noreply@blogger.com (Fernando)</author><thr:total>0</thr:total></item></channel></rss>