vinculado al verbo abstraer (separar las propiedades de un objeto a travs de una operacin mental, dejar de prestar atencin al mundo sensible para centrarse en un pensamiento). La abstraccin, por lo tanto, es alguna de estas acciones o sus efectos. Para la filosofa, la abstraccin es una actividad cerebral que permite aislar, a nivel conceptual, una cierta cualidad de algo con la intencin de entregarse a una reflexin sobre la misma sin considerar el resto de las propiedades del objeto en cuestin. Cuando gracias a dichos pensamientos o a la accin de comparar entre diversas cosas, se advierte que la cualidad aislada es comn a varios, se dice que el objeto sometido a la abstraccin es un universal. La disciplina que se dedica a investigar sobre la existencia, o no, de los universales separados de su reflexin, es la metafsica. Se conoce como arte abstracto, por otra parte, el estilo que no intenta reproducir las formas de la naturaleza u otros modelos, sino que se centra en las caractersticas de la estructura, la forma y los colores de la propia obra. Este estilo se desarroll como una especie de oposicin al realismo y a la fotografa. Dentro del arte abstracto es posible destacar al expresionismo abstracto, un movimiento de la pintura que tuvo su origen en la dcada del 40 en el territorio estadounidense. Entre sus caractersticas principales, puede sealarse su preferencia por el leo (y no por el lienzo) y por los formatos de gran tamao. En el arte, la abstraccin surge en el siglo XX al comenzar una nueva tendencia en la que se exploran nuevas formas. Hasta ese momento las obras de arte imitaban a la naturaleza con sus paisajes, personas y objetos que habitan en ella; se crea que cuanto ms se asemejara una pintura a la realidad, ms perfecta era. La pintura abstracta se basa en los elementos de la naturaleza pero no se rige por ninguna norma; el artista manifiesta su mundo interior y el arte se convierte en algo absolutamente subjetivo. En este perodo el arte se caracteriza por transmitir sentimientos, utilizando la mezcla de colores sin lmites y del mismo modo las formas geomtricas, en una palabra, el arte se libera. En 1964 aparece en Estados Unidos la abstraccin postpictrica, como sucesora del expresionismo abstracto. Quien primero mencion el trmino fue, Clement Greenberg, para describir un estilo artstico que rechazaba la gestualidad y aplicaba deforma uniforme el color, pero sin deseos de transmitir un mensaje a priori. Adems, la pintura ocupaba superficies muy amplias y no deba ser justificada con ideas o sentimientos, ella misma era su propia justificacin. De esta corriente surgi posteriormente el minimalismo que busc un planteo formal y cromtico ms bsico que las anteriores tendencias. Diferentes niveles de abstraccin En lo que respecta a la abstraccin como capacidad del razonamiento, ella es la que permite separar a los objetos en partes y comprender lo esencial de cada una de ellas. Segn Jacques Maritain, para comprender lo fundamental de lasciencias especulativas, es necesario investigar sobre el dominio de las ciencias en su jerarqua y divisiones, las cuales pueden diferenciarse de acuerdo al grado de inteligibilidad (aquello que puede ser entendido) que poseen en ellas los objetos del conocimiento. Por su parte, Santo Toms de Aquino, estaba convencido de que la inteligibilidad se desarrolla de forma paralela a la inmaterialidad, y es por eso que son ms comprensibles las cosas de carcter material que las espirituales; pese a ello las cuestiones superiores del saber tienen que ver con el conocimiento espiritual. La abstraccin constituye un proceso que se desarrolla en tres niveles: Abstraccin de primer grado: Es conocida como la abstraccin formal. Permite conocer la materia mvil y sensible que forma a los objetos abstractos y captarlos en una forma amplia. En este nivel la inteligencia comprende la esencia del objeto, su materia (salvo raras excepciones, todas las cosas estn formadas por materia). En la antigedad esta parte del proceso reciba el nombre de phisica, es decir fsica. Abstraccin de segundo grado: Conocida como la abstraccin de la materia sensible. Analiza el nmero, cantidad o extensin de la materia que forma el objeto; es de tipo imaginaria y necesaria para comprender el funcionamiento del objeto. La diferencia entre este grado y el primero se encuentra en la inmaterialidad de este segundo. Es el mundo de la extensin y se resuelve a travs de los nmeros, es decir las matemticas. Abstraccin de tercer grado: Conocida como abstraccin de toda materia, aquello que se separa de la materia y de lo numrico en un objeto. Este nivel trata sobre ser como tal, es decir, sobre el mundo del Ser y las realidades que no son materiales, como el espritu. Podra decirse que esa esencia se aprovecha de la materia y de sus cualidades numricas para manifestarse y que slo puede comprenderse este aspecto de la esencia a travs de la metafsica.
Lee todo en: Definicin de abstraccin - Qu es, Significado y Concepto http://definicion.de/abstraccion/#ixzz31FP0uj2y
Se aleja de la mmesis de la apariencia externa. La obra de arte abstracta existe independientemente de la realidad.
El grado de abstraccin puede ser parcial o absoluto. En el arte abstracto puro no existen rastros reconocibles figurativos, mientras que la abstraccin parcial conserva partes del referente a la vez modifica otras.
nfasis en la propia expresividad de los elementos esenciales del arte y su organizacin.
Tambin los materiales y procedimientos adquieren significado ms all de su aspecto tcnico.
El ttulo de las obras puede ser explicativo y ayudar a transmitir un mensaje.
En informtica, se define al concepto de Encapsulamiento como el proceso que interviene en el momento en que se envan los datos a travs de una determinada Red, de modo que se pueden ordenar, administrar y hasta verificar si han llegado a destino, en qu estado, o si ha sido eficiente la operacin, referida comnmente como Encapsulamiento de Datos. La accin de Encapsulado, entonces, tiene dos etapas, una en la cual se asigna una Interfaz Pblica al dato que est siendo enviado y a las operaciones que se pueden realizar con el mismo, y otra en la que se implementa un objeto, asignndole la propiedad de Accesos a travs de la misma, o bien mediante una interrelacin con otros Encapsulamientos que hayan sido transformados con la implementacin de otro Objeto. Entonces, la base del Encapsulamiento est en ocultar el estado de los datos pertenecientes a un Objeto de modo tal de que solamente pueden ser cambiados a travs de las operaciones que han sido predefinidas y especificadas para el tratamiento de dicho objeto. Cada uno de stos es un mdulo aislado de factores externos, de modo tal de que cada uno de estos "paquetes" solamente acta en conjunto con otros Objetos, o bien mediante la operacin especfica que permite su modificacin, protegindose de alteraciones por quienes no pueden acceder a los mismos, o evitando que posteriormente ocurran errores en su utilizacin. El encapsulamiento dentro de un Software permite entonces aadir variables y mtodos dentro de una Clase, manteniendo una sola entidad, mediante un mtodo de ocultamiento especfico, permitiendo que se conozca el comportamiento de este paquete de datos pero no la complejidad de los mismos, evitando que sus Detalles sean vistos por quienes no han sido autorizados y garantizando un correcto envo y recepcin de dicha informacin. Para realizar un Encapsulamiento es necesario entender dos funciones fundamentales: Interfaz: Permite establecer una imgen externa de una Clase especfica, realizando un aislamiento del comportamiento y tomando una abstraccin comn a la misma Implementacin: Realizada la abstraccin mencionada, se ejecuta una representacin y se le asignan los comportamientos que esperamos mediante el mecanismo adecuado para su ejecucin A su vez, podemos distinguir distintos tipos de Encapsulamiento: Estndar: Forma de encapsulamiento bsica y predeterminada Abierto: En este caso, el encapsulamiento se da cuando la Clase puede ser accedida desde cualquier parte y desde el exterior de la misma Protegido: El encapsulamiento solo puede ser accedido y ejecutado desde la Clase Semi-Abierto: Permite solamente su acceso desde una Clase Heredada Cerrado: Impide su acceso de cualquier otra forma que no sea ejecutndose en su Clase Protegido : Solo es accesible desde la Clase y las clases que heredan (a cualquier nivel). Semi cerrado : Solo es accesible desde la clase heredada Cerrado : Solo es accesible desde la Clase.
desde mastermagazine http://www.mastermagazine.info/termino/4880.php#ixzz31FS9ewe8
En programacin orientada a objetos, el polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintcticamente iguales a objetos de tipos distintos. El nico requisito que deben cumplir los objetos que se utilizan de manera polimrfica es saber responder al mensaje que se les enva. La apariencia del cdigo puede ser muy diferente dependiendo del lenguaje que se utilice, ms all de las obvias diferencias sintcticas. Por ejemplo, en un lenguaje de programacin que cuenta con un sistema de tipos dinmico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimrfico sean parte de una jerarqua de clases. ndice [ocultar] 1 Descripcin 2 Clasificacin 3 Ejemplo de polimorfismo 4 Polimorfismo desde una interfaz 5 Diferencias entre polimorfismo y sobrecarga 6 Referencias Descripcin[editar] En lenguajes basados en clases y con un sistema de tipos de datos fuerte (independientemente de si la verificacin se realiza en tiempo de compilacin o de ejecucin), es posible que el nico modo de poder utilizar objetos de manera polimrfica sea que compartan una raz comn, es decir, una jerarqua de clases, ya que esto proporciona la compatibilidad de tipos de datos necesaria para que sea posible utilizar una misma variable de referencia (que podr apuntar a objetos de diversas subclases de dicha jerarqua) para enviar el mismo mensaje (o un grupo de mensajes) al grupo de objetos que se tratan de manera polimrfica. No obstante, algunos lenguajes de programacin (Java, C++) permiten que dos objetos de distintas jerarquas de clases respondan a los mismos mensajes, a travs de las denominadas interfaces (esta tcnica se conoce como composicin de objetos). Dos objetos que implementen la misma interfaz podrn ser tratados de forma idntica, como un mismo tipo de objeto, el tipo definido por la interfaz. As, distintos objetos podrn intercambiarse en tiempo de ejecucin siempre que sean del mismo tipo, y adems con dependencias mnimas entre ellos. Por estos motivos se considera un buen principio de diseo en programacin orientada a objetos el favorecer la composicin de objetos frente a la herencia de clases. 1
En Java las interfaces se declaran mediante la palabra clave Interface. Estas se utilizan para lograr la necesaria concordancia de tipos que hace posible el polimorfismo, tambin como un contrato que debe cumplir cualquier clase que implemente una cierta interfaz, y como una forma de documentacin para los desarrolladores. A veces, en la literatura especfica sobre Java se habla de "herencia y polimorfismo de interfaces", lo que no concuerda con los conceptos de la programacin orientada a objetos porque una clase que implementa una interfaz slo obtiene su tipo de datos y la obligacin de implementar sus mtodos, no copia comportamiento ni atributos. Esta terminologa puede llevar a confusin, puesto que en Java a menudo se utiliza la mal llamada "herencia de interfaces" para dotar a una clase de uno o varios tipos adicionales, lo que unido a la composicin, evite la necesidad de la herencia mltiple y favorezca una utilizacin ms amplia del polimorfismo. No obstante, el uso de una jerarqua de clases como paso previo, es muy habitual incluso en aquellos lenguajes en los que es posible prescindir de tal jerarqua, ya que, desde una perspectiva conceptual, se puede decir que al pertenecer los "objetos polimrficos" a subclases de una misma jerarqua, se asegura la equivalencia semntica de los mensajes que se invocarn de modo polimrfico. Por esto, en programacin orientada a objetos a veces se denomina al polimorfismo como "polimorfismo de subclase (o de subtipo)". En resumen, en la programacin orientada a objetos, la esencia del polimorfismo no atae a la clase o prototipo de la que provienen los objetos. Aun as, en los lenguajes basados en clases, es habitual (y en algunos tal vez sea el nico modo) que dichos objetos pertenezcan a subclases pertenecientes a una misma jerarqua. Entonces, el polimorfismo debe verse como una forma flexible de usar un grupo de objetos (como si fueran slo uno). Podra decirse que el polimorfismo en esencia refiere al comportamiento de los objetos, no a su pertenencia a una jerarqua de clases (o a sus tipos de datos). Lo anterior se hace an ms evidente en lenguajes de programacin orientada a objetos basados en prototipos, como Self, en los que las clases no existen. Adems, es importante remarcar que si un cierto grupo de objetos pueden utilizarse de manera polimrfica es porque, en ltima instancia, todos ellos saben responder a un cierto mensaje (o a varios), pero dado que esos mismos objetos generalmente contendrn otros mtodos (que otros objetos en dicho grupo no contienen), difcilmente se pueda decir lisa y llanamente que los objetos son polimrficos; lo correcto es decir que esos objetos se pueden utilizar de modo polimrfico para un cierto conjunto de mensajes. Un ejemplo. Podemos crear dos clases distintas: Pez y Ave que heredan de la superclaseAnimal. La clase Animal tiene el mtodo abstracto mover que se implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta). Entonces, un tercer objeto puede enviar el mensaje mover a un grupo de objetos Pezy Ave por medio de una variable de referencia de clase Animal, haciendo as un uso polimrfico de dichos objetos respecto del mensaje mover. El concepto de polimorfismo, desde una perspectiva ms general, se puede aplicar tanto a funciones como a tipos de datos. As nacen los conceptos de funciones polimrficas y tipos polimrficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimrficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no est especificado. Clasificacin[editar] Se puede clasificar el polimorfismo en dos grandes clases: Polimorfismo dinmico (o polimorfismo paramtrico) es aqul en el que el cdigo no incluye ningn tipo de especificacin sobre el tipo de datos sobre el que se trabaja. As, puede ser utilizado a todo tipo de datos compatible. Polimorfismo esttico (o polimorfismo ad hoc) es aqul en el que los tipos a los que se aplica el polimorfismo deben ser explcitos y declarados uno por uno antes de poder ser utilizados. El polimorfismo dinmico unido a la herencia es lo que en ocasiones se conoce como programacin genrica. Tambin se clasifica en herencia por redefinicin de mtodos abstractos y por mtodo sobrecargado. El segundo hace referencia al mismo mtodo con diferentes parmetros. Otra clasificacin agrupa los polimorfismo en dos tipos: Ad-Hoc que incluye a su vez sobrecarga de operadores y coercin,Universal (inclusin o controlado por la herencia, paramtrico o genericidad). Ejemplo de polimorfismo[editar] En el siguiente ejemplo hacemos uso del lenguaje C++ para ilustrar el polimorfismo. Se observa a la vez el uso de las funciones virtuales puras, como se les conoce en C++, estas funciones constituyen una interfaz ms consistente cuando se trabaja con una jerarqua de clases, puesto que hacen posible el enlace durante la ejecucin. Sin embargo como se ver, para que el polimorfismo funcione no es una condicin obligatoria que todas las funciones en la clase base sean declaradas como virtuales.
Diagrama de clases UML, que describe grficamente la relacin entre la clase base Figura y sus posibles clases derivadas, y la entidad que utiliza esta estructura: la Aplicacin, tambin identificado como objeto Cliente. #include<iostream> using namespace std;
class Figura { private: float base; float altura; public: void captura(); virtual unsigned float perimetro()=0; virtual unsigned float area()=0; };
class Rectangulo: public Figura { public: void imprime(); unsigned float perimetro(){return 2*(base+altura);} unsigned float area(){return base*altura;} };
class Triangulo: public Figura { public: void muestra(); unsigned float perimetro(){return 2*altura+base} unsigned float area(){return (base*altura)/2;} };
void Figura::captura() { cout << "CALCULO DEL AREA Y PERIMETRO DE UN TRIANGULO ISSCELES Y UN RECTANGULO:" << endl; cout << "escribe la altura: "; cin >> altura; cout << "escribe la base: "; cin >> base; cout << "EL PERIMETRO ES: " << perimetro(); cout << "EL AREA ES: " << area(); getchar(); return 0; } Polimorfismo desde una interfaz[editar] Aunque el polimorfismo es el mismo se aplique donde se aplique, el modo en que se aplica desde una interfaz puede resultar un poco ms oscuro y difcil de entender. Se expone un sencillo ejemplo (en VB-NET) comentado para entender como funciona aplicado desde una interfaz, primero se escribe el cdigo y luego se comenta el funcionamiento. Nota: para no enturbiar el cdigo en exceso, todo lo que no se declara privado se sobreentiende pblico. ' Declaramos una interfaz llamada IOperar y declaramos una funcin llamada Operar ' que implementarn las clases deseadas: Interface IOperar Function Operar(valor1 as integer, valor2 as integer) as long End Interface
' Declaramos una clase que trabaja ms alejada del usuario y que contendra funciones comunes ' para las siguiente clase, si no fueran idnticas iran en la interfaz, ' pero al caso de mostrar el polimorfismo se suponen idnticas: Class Operacion Function Calcular(clasellamante as Object) as Long ' aqu ira el cdigo comn a todas las operaciones.... que llaman a esa funcin ' por ejemplo recoger los 2 valores de la operacin, chequear que estn en el rango deseado, etc.
' se supone que la funcin inputValor recoge un valor de algn sitio valor1 as integer = inputValor() valor2 as integer = inputValor()
op as New IOperar = clasellamante Return op.Operar(valor1,valor2) 'AQU es donde se utiliza el polimorfismo. End Function End Class ' Declaramos 2 clases: Sumar y Restar que implementan la interfaz y que llaman a la clase Operacion: Class Sumar Implements IOperar Private Function Operar(valor1 as Integer, valor2 as Integer) as Long Implements IOperar.Operar Return valor1 + valor2 End Function
Function Calcular() as Long op as New operacion Return op.Calcular(Me) ' se est llamando a la funcin 'Calcular' de la clase 'Operacin' End Function End Class ' segunda clase.... Class Restar Implements IOperar Private Function Operar(valor1 as Integer, valor2 as Integer) as Long Implements IOperar.Operar Return valor1 - valor2 End Function
Function Calcular() as Long op as New operacion Return op.Calcular(Me) ' se est llamando a la funcin 'Calcular' de la clase 'Operacin' End Function End Class Analicemos ahora el cdigo para entender el polimorfismo expuesto en la interfaz: La interfaz expone un mtodo que puede ser implementado por las diferentes clases, normalmente relacionadas entre si. Las clases Sumar y Restar implementan la interfaz pero el mtodo de la interfaz lo declaramos privado para evitar ser accedido libremente y adems tienen un mtodo llamado Calcularque llama a la clase Operacion donde tenemos otro mtodo con el mismo nombre. Es esta clase ltima la que realiza el polimorfismo y debe fijarse como es a travs de una instancia de la interfaz que llama al mtodo operar. La interfaz sabe a qu mtodo de qu clase llamar desde el momento que asignamos un valor a la variable OP en el mtodoCalcular de la clase Operacion, que a su vez recibi la referencia del mtodo Calcular desde la clase que la llama, sea sta cual sea, se identifica a s misma, mediante la referencia Me This segn el lenguaje empleado. Debe notarse que la instancia de la interfaz accede a sus mtodos aunque en sus clases se hayan declarado privadas. Diferencias entre polimorfismo y sobrecarga[editar] El polimorfismo como se muestra en el ejemplo anterior, suele ser bastante ventajoso aplicado desde las interfaces, ya que permite crear nuevos tipos sin necesidad de tocar las clases ya existentes (imaginemos que deseamos aadir una claseMultiplicar), basta con recompilar todo el cdigo que incluye los nuevos tipos aadidos. Si se hubiera recurrido a lasobrecarga durante el diseo exigira retocar la clase anteriormente creada al aadir la nueva operacin Multiplicar, lo que adems podra suponer revisar todo el cdigo donde se instancia a la clase. Un mtodo est sobrecargado si dentro de una clase existen dos o ms declaraciones de dicho mtodo con el mismo nombre pero con parmetros distintos, por lo que no hay que confundirlo con polimorfismo. En definitiva: La sobrecarga se resuelve en tiempo de compilacin utilizando los nombres de los mtodos y los tipos de sus parmetros; el polimorfismo se resuelve en tiempo de ejecucin del programa, esto es, mientras se ejecuta, en funcin de la clase a la que pertenece el objeto. Referencias[editar] 1. Volver arriba GAMMA et al, Erich (2003). Patrones de diseo. Addison Wesley. pp. 15- 18. ISBN 84-7829-059-1.
herencia (P.O.O) HERENCIA: -CONCEPTOS: herncia:Es una propiedad que permite que los objetos sean creados a partir de otros ya existentes, obteniendo caractersticas (mtodos y atributos) similares a los ya existentes. Es la relacin entre una clase general y otra clase mas especifica. Es un mecanismo que nos permite crear clases derivadas a partir de clase base, Nos permite compartir automticamente mtodos y datos entre clases subclases y objetos. Por ejemplo: Si declaramos una clase prrafo derivada de un clase texto todos los mtodos y variables asociadas con la clase texto son automticamente heredados por la subclase prrafo.[1] herencia:Este quizas es el tema que mas problemas causa al estudiante; sin embargo, no es dificil en su concepcin. El objeto Persona es un objeto muy generico y limitado en si; asi que se puede considerar como un objeto Abstracto; ya que por si mismo no puede crear una persona completa; sin embargo, sus funciones basicas son las mismas en todos los seres humanos, con diferencias puntuales, asi que podemos crear dos objetos Hombre y Mujer, que hereden todas sus caracteristicas genericas como respirar, hablar, nombre, etc, del objeto Persona, y sea en la implementacin de cada objeto donde empiezen las diferencias.[5] -Ejemplo en Java [editar] public class Mamifero {
private int patas; private String nombre;
public void imprimirPatas() { System.out.println(nombre + tiene + patas + patas\n); }
public Mamifero(String nombre, int patas) { this.nombre = nombre; this.patas = patas; } }
public class Perro extends Mamifero { public Perro(String nombre){ super(nombre, 4); } }
public class Gato extends Mamifero{ public Gato(String nombre){ super(nombre, 4); } }
public class CreaPerro { public static void main(String [] args) { Perro bobi = new Perro(Bobi); bobi.imprimirPatas(); /*Est en la clase mamfero*/ } } [7]