Programación Orientada A Objetos
Programación Orientada A Objetos
Programación Orientada A Objetos
Introducción [editar]
Los objetos son entidades que combinan estado, comportamiento e identidad:
• El estado está compuesto de datos, serán uno o varios atributos a los que se
habrán asignado unos valores concretos (datos).
• El comportamiento está definido por los procedimientos o métodos con que puede
operar dicho objeto, es decir, qué operaciones se pueden realizar con él.
• La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con
otras palabras, es su identificador (concepto análogo al de identificador de una
variable o una constante).
Origen [editar]
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un
lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard
del Centro de Cómputo Noruego en Oslo. Al parecer, en este centro, trabajaban en
simulaciones de naves, y fueron confundidos por la explosión combinatoria de cómo las
diversas cualidades de diversas naves podían afectar unas a las otras. La idea ocurrió para
agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada
clase de objetos de definir sus propios datos y comportamiento. Fueron refinados más
tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC (y cuya primera
versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente
dinámico en el cual los objetos se podrían crear y modificar "en marcha" en lugar de
tener un sistema basado en programas estáticos.
• ActionScript
• ActionScript 3
• Ada
• C++
• C#
• Clarion
• Lenguaje de programación D
• Object Pascal (Delphi)
• Harbour
• Eiffel
• Java
• JavaScript (la herencia se realiza por medio de la programación basada en
prototipos)
• Lexico (en castellano)
• Objective-C
• Ocaml
• Oz
• Lenguaje de programación R
• Perl (soporta herencia múltiple. La resolución se realiza en preorden, pero puede
modificarse al algoritmo C3 por medio del módulo Class::C3 en CPAN)
• PHP (en su versión 5)
• Python
• Ruby
• Smalltalk
• Magik (SmallWorld)
• VB.NET
• Visual FoxPro
• XBase++
• Gambas
• Flex builder (adobe)
Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object
REXX, han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de
programación clásico.
Un nuevo paso en la abstracción de paradigmas de programación es la Programación
Orientada a Aspectos (POA). Aunque es todavía una metodología en estado de
maduración, cada vez atrae a más investigadores e incluso proyectos comerciales en todo
el mundo.
Monografías.com
Programación Orientada a Objetos
Sistemas de Procesamiento de Datos
INTRODUCCION
Actualmente una de las áreas más candentes en la industria y en el ámbito
académico es la orientación a objetos. La orientación a objetos promete mejoras
de amplio alcance en la forma de diseño, desarrollo y mantenimiento del software
ofreciendo una solución a largo plazo a los problemas y preocupaciones que han
existido desde el comienzo en el desarrollo de software: la falta de portabilidad
del código y reusabilidad, código que es dificil de modificar, ciclos de desarrollo
largos y tecnicas de codificacion no intuituvas.
Un lenguaje orientado a objetos ataca estos problemas. Tiene tres características
basicas: debe estar basado en objetos, basado en clases y capaz de tener herencia
de clases. Muchos lenguajes cumplen uno o dos de estos puntos; muchos menos
cumplen los tres. La barrera más difícil de sortear es usualmente la herencia.
El concepto de programación orientada a objetos (OOP) no es nuevo, lenguajes
clásicos como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea
natural de la existencia de un mundo lleno de objetos y que la resolución del
problema se realiza en términos de objetos, un lenguaje se dice que está basado
en objetos si soporta objetos como una característica fundamental del mismo.
El elemento fundamental de la OOP es, como su nombre lo indica, el objeto.
Podemos definir un objeto como un conjunto complejo de datos y
programas que poseen estructura y forman parte de una
organización.
Esta definición especifica varias propiedades importantes de los objetos. En
primer lugar, un objeto no es un dato simple, sino que contiene en su interior
cierto número de componentes bién estructurados. En segundo lugar, cada objeto
no es un ente aislado, sino que forma parte de una organización jerárquica o de
otro tipo.
ESTRUCTURA DE UN OBJETO
Un objeto puede considerarse como una especie de cápsula dividida en tres
partes:
1 - RELACIONES
2 - PROPIEDADES
3 - METODOS
Cada uno de estos componentes desempeña un papel totalmente independiente:
Las relaciones permiten que el objeto se insterte en la organización y están
formadas esencialmente por punteros a otros objetos.
Las propiedades distinguen un objeto determinado de los restantes que forman
parte de la misma organización y tiene valores que dependen de la propiedad de
que se trate. Las propiedades de un objeto pueden ser heredadas a sus
descendientes en la organización.
Los métodos son las operaciones que pueden realizarse sobre el objeto, que
normalmente estarán incorporados en forma de programas (código) que el objeto
es capaz de ejecutar y que también pone a disposición de sus descendientes a
través de la herencia.
Encapsulamiento y ocultación
Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay
datos y programas, todos ellos relacionados entre sí, como si estuvieran
encerrados conjuntamente en una cápsula. Esta propiedad (encapsulamiento),
es una de las características fundamentales en la OOP.
Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso
los programadores conozcan cómo está distribuída la información o qué
información hay disponible. Esta propiedad de los objetos se denomina
ocultación de la información.
Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario
respecto a un objeto y a lo que contiene. Si así fuera no se podría hacer gran cosa
con él. Lo que sucede es que las peticiones de información a un objeto. deben
realizarse a través de mensajes dirigidos a él, con la orden de realizar la
operación pertinente. La respuesta a estas ordenes será la información requerida,
siempre que el objeto considere que quien envía el mensaje está autorizado para
obtenerla.
El hecho de que cada objeto sea una cápsula facilita enormemente que un objeto
determinado pueda ser transportado a otro punto de la organización, o incluso a
otra organización totalmente diferente que precise de él. Si el objeto ha sido bien
construído, sus métodos seguirán funcionando en el nuevo entorno sin
problemas. Esta cualidad hace que la OOP sea muy apta para la reutilización de
programas.
Organización de los objetos
En principio, los objetos forman siempre una organización jerárquica, en el
sentido de que ciertos objetos son superiores a otros de cierto modo.
Existen varios tipos tipos de jerarquías: serán simples cuando su estructura
pueda ser representada por medio de un "arbol". En otros casos puede ser más
compleja.
En cualquier caso, sea la estructura simple o compleja, podrán distinguirse en
ella tres niveles de objetos.
-La raíz de la jerarquía. Se trata de un objeto único y especial. Este se
caracteríza por estar en el nivel más alto de la estructura y suele recibir un
nombre muy genérico, que indica su categoría especial, como por ejemplo objeto
madre, Raíz o Entidad.
-Los objetos intermedios. Son aquellos que descienden directamente de la raíz y
que a su vez tienen descendientes. Representan conjuntos o clases de objetos,
que pueden ser muy generales o muy especializados, según la aplicación.
Normalmente reciben nombres genéricos que denotan al conjunto de objetos que
representan, por ejemplo, VENTANA, CUENTA, FICHERO. En un conjunto
reciben el nombre de clases o tipos si descienden de otra clase o subclase.
-Los objetos terminales. Son todos aquellos que descienden de una clase o
subclase y no tienen descendientes. Suelen llamarse casos particulares,
instancias o ítems porque representan los elementos del conjunto
representado por la clase o subclase a la que pertenecen.
Veamos ahora en detalle los tres elementos mencionados en "Estructura de un
Objeto".
1. RELACIONES
Las relaciones entre objetos son, precisamente, los enlaces que permiten a un
objeto relacionarse con aquellos que forman parte de la misma organización.
Las hay de dos tipos fundamentales:
-Relaciones jerárquicas. Son esenciales para la existencia misma de la aplicación
porque la construyen. Son bidireccionales, es decir, un objeto es padre de otro
cuando el primer objeto se encuentra situado inmediatamente encima del
segundo en la organización en la que ambos forman parte; asimismo, si un objeto
es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y
F, es decir, D,E y F son hijos de B; en la fig. 3, los objetos B y C son padres de F,
que a su vez es hijo de ambos).
Una organización jerárquica simple puede definirse como aquella en la que un
objeto puede tener un solo padre, mientras que en una organizacion jerárquica
compleja un hijo puede tener varios padres).
-Relaciones semánticas. Se refieren a las relaciones que no tienen nada que ver
con la organización de la que forman parte los objetos que las establecen. Sus
propiedades y consecuencia solo dependen de los objetos en sí mismos (de su
significado) y no de su posición en la organización.
Se puede ver mejor con un ejemplo: supongamos que vamos a construir un
diccionario informatizado que permita al usuario obtener la definición de una
palabra cualquiera. Supongamos que, en dicho diccionario, las palabras son
objetos y que la organización jerárquica es la que proviene de forma natural de la
estructura de nuestros conocimientos sobre el mundo.
La raíz del diccionario podría llamarse TEMAS. De éste término genérico
descenderán tres grandes ramas de objetos llamadas VIDA, MUNDO y
HOMBRE. El primero (vida) comprenderá las ciencias biológicas: Biología y
Medicina. El segundo (mundo), las ciencias de la naturaleza inerte: las
Matemáticas, la Física, la Química y la Geología. El tercero (hombre)
comprenderá las ciencias humanas: la Geografía, la Historia, etc.
Veamos un ejemplo: estableceremos la relación trabajo entre los objetos
NEWTON y OPTICA y la interpretaremos diciendo que significa que Newton
trabajó en óptica (véase la fig. 4). La relación es, evidentemente, semántica, pués
no establece ninguna connotación jerárquica entre NEWTON y OPTICA y su
interpretación depende exclusivamente del significado de ambos objetos.
La existencia de esta relación nos permitirá responder a preguntas como:
¿Quién trabajó en óptica?
¿En qué trabajó Newton?
¿Quien trabajó en Física?
Las dos primeras se deducen inmediatamente de la existencia de la relación
trabajo. Para la tercera observamos que si Newton trabajó en óptica
automáticamente sabemos que trabajó en Física, por ser óptica una rama de la
Física (en nuestro diccionario, el objeto OPTICA es hijo del objeto FISICA).
Entonces gracias a la OOP podemos responder a la tercera pregunta sin
necesidad de establecer una relación entre NEWTON y FISICA, apoyandonos
sólo en la relación definida entre NEWTON y OPTICA y en que OPTICA es hijo
de FISICA. De este modo se elimina toda redundancia innecesaria y la cantidad
de información que tendremos que definir para todo el diccionario será mínima.
2. PROPIEDADES
Todo objeto puede tener cierto número de propiedades, cada una de las cuales
tendrá, a su vez, uno o varios valores. En OOP, las propiedades corresponden a
las clásicas "variables" de la programación estructurada. Son, por lo tanto, datos
encapsulados dentro del objeto, junto con los métodos (programas) y las
relaciones (punteros a otros objetos). Las propiedades de un objeto pueden tener
un valor único o pueden contener un conjunto de valores mas o menos
estructurados (matrices, vectores, listas, etc.). Además, los valores pueden ser de
cualquier tipo (numérico, alfabético, etc.) si el sistema de programación lo
permite.
Pero existe una diferencia con las "variables", y es que las propiedades se pueden
heredar de unos objetos a otros. En consecuencia, un objeto puede tener una
propiedad de maneras diferentes:
-Propiedades propias. Están formadas dentro de la cápsula del objeto.
-Propiedades heredadas. Estan definidas en un objeto diferente, antepasado de
éste (padre,"abuelo", etc.). A veces estas propiedades se llaman propiedades
miembro porque el objeto las posee por el mero hecho de ser miembro de una
clase.
3. METODOS
Una operación que realiza acceso a los datos. Podemos definir método como un
programa procedimental o procedural escrito en cualquier lenguaje, que está
asociado a un objeto determinado y cuya ejecución sólo puede desencadenarse a
través de un mensaje recibido por éste o por sus descendientes.
Son sinónimos de 'método' todos aquellos términos que se han aplicado
tradicionalmente a los programas, como procedimiento, función, rutina, etc. Sin
embargo, es conveniente utilizar el término 'método' para que se distingan
claramente las propiedades especiales que adquiere un programa en el entorno
OOP, que afectan fundamentalmente a la forma de invocarlo (únicamente a
través de un mensaje) y a su campo de acción, limitado a un objeto y a sus
descendientes, aunque posiblemente no a todos.
Si los métodos son programas, se deduce que podrían tener argumentos, o
parámetros. Puesto que los métodos pueden heredarse de unos objetos a otros,
un objeto puede disponer de un método de dos maneras diferentes:
-Métodos propios. Están incluídos dentro de la cápsula del objeto.
-Métodos heredados. Estan definidos en un objeto diferente, antepasado de éste
(padre,"abuelo", etc.). A veces estos métodos se llaman métodos miembro
porque el objeto los posee por el mero hecho de ser miembro de una clase.
Polimorfísmo
Una de las características fundamentales de la OOP es el polimorfísmo, que no es
otra cosa que la posibilidad de construir varios métodos con el mismo nombre,
pero con relación a la clase a la que pertenece cada uno, con comportamientos
diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de
clases diferentes. Estos objetos recibirían el mismo mensaje global pero
responderían a él de formas diferentes; por ejemplo, un mensaje "+" a un objeto
ENTERO significaría suma, mientras que para un objeto STRING significaría
concatenación ("pegar" strings uno seguido al otro)
Demonios
Es un tipo especial de métodos, relativamente poco frecuente en los sistemas de
OOP, que se activa automáticamente cuando sucede algo especial. Es decir, es un
programa, como los métodos ordinarios, pero se diferencia de estos porque su
ejecución no se activa con un mensaje, sino que se desencadena autmáticamente
cuando ocurre un suceso determinado: la asignación de un valor a una propiedad
de un objeto, la lectura de un valor determinado, etc.
Los demonios, cuando existen, se diferencian de otros métodos por que no son
heredables y porque a veces están ligados a una de las propiedades de un objeto,
mas que al objeto entero.
CONSIDERACIONES FINALES
Beneficios que se obtienen del desarrollo con OOP
Día a día los costos del Hardware decrecen. Así surgen nuevas áreas de aplicación
cotidianamente: procesamiento de imágenes y sonido, bases de datos
multimediales, automatización de oficinas, ambientes de ingeniería de software,
etc. Aún en las aplicaciones tradicionales encontramos que definir interfases
hombre-máquina "a-la-Windows" suele ser bastante conveniente.
Lamentablemente, los costos de producción de software siguen aumentando; el
mantenimiento y la modificación de sistemas complejos suele ser una tarea
trabajosa; cada aplicación, (aunque tenga aspectos similares a otra) suele
encararse como un proyecto nuevo, etc.
Todos estos problemas aún no han sido solucionados en forma completa. Pero
como los objetos son portables (teóricamente) mientras que la herencia permite
la reusabilidad del código orientado a objetos, es más sencillo modificar código
existente porque los objetos no interaccionan excepto a través de mensajes; en
consecuencia un cambio en la codificación de un objeto no afectará la operación
con otro objeto siempre que los métodos respectivos permanezcan intactos. La
introducción de tecnología de objetos como una herramienta concepual para
analizar, diseñar e implementar aplicaciones permite obtener aplicaciones más
modificables, fácilmente extendibles y a partir de componentes reusables. Esta
reusabilidad del código disminuye el tiempo que se utiliza en el desarrollo y hace
que el desarrollo del software sea mas intuitivo porque la gente piensa
naturalmente en términos de objetos más que en términos de algoritmos de
software.
Problemas derivados de la utilización de OOP en la actualidad
Un sistema orientado a objetos, por lo visto, puede parecer un paraíso virtual. El
problema sin embargo surge en la implementación de tal sistema. Muchas
compañías oyen acerca de los beneficios de un sistema orientado a objetos e
invierten gran cantidad de recursos luego comienzan a darse cuenta que han
impuesto una nueva cultura que es ajena a los programadores actuales.
Específicamente los siguientes temas suelen aparecer repetidamente:
Curvas de aprendizaje largas. Un sistema orientado a objetos ve al mundo en
una forma única. Involucra la conceptualización de todos los elementos de un
programa, desde subsistemas a los datos, en la forma de objetos. Toda la
comunicación entre los objetos debe realizarse en la forma de mensajes. Esta no
es la forma en que están escritos los programas orientados a objetos actualmente;
al hacer la transición a un sistema orientado a objetos la mayoría de los
programadores deben capacitarse nuevamente antes de poder usarlo.
Dependencia del lenguaje. A pesar de la portabilidad conceptual de los objetos en
un sistema orientado a objetos, en la práctica existen muchas dependencias.
Muchos lenguajes orientados a objetos están compitiendo actualmente para
dominar el mercado. Cambiar el lenguaje de implementación de un sistema
orientado a objetos no es una tarea sencilla; por ejemplo C++ soporta el concepto
de herencia multiple mientras que SmallTalk no lo soporta; en consecuencia la
elección de un lenguaje tiene ramificaciones de diseño muy importamtes.
Determinacion de las clases. Una clase es un molde que se utiliza para crear
nuevos objetos. En consecuencia es importante crear el conjunto de clases
adecuado para un proyecto. Desafortunadamente la definición de las clases es
más un arte que una ciencia. Si bien hay muchas jerarquías de clase predefinidas
usualmente se deben crear clases específicas para la aplicación que se este
desarrollando. Luego, en 6 meses ó 1 año se da cuenta que las clases que se
establecieron no son posibles; en ese caso será necesario reestructurar la
jerarquía de clases devastando totalmente la planificación original.
Performance. En un sistema donde todo es un objeto y toda interaccion es a
través de mensajes, el tráfico de mensajes afecta la performance. A medida que la
tecnología avanza y la velocidad de microprocesamiento, potencia y tamaño de la
memoria aumentan, la situacion mejorará; pero en la situación actual, un diseño
de una aplicación orientada a objetos que no tiene en cuenta la performance no
será viable comercialmente.
Idealmente, habría una forma de atacar estos problemas eficientemente al mismo
tiempo que se obtienen los beneficios del desarrollo de una estrategia orientada a
objetos. Deberia existir una metodología fácil de aprender e independiente del
lenguaje, y facil de reestructurar que no drene la performance del sistema .
Monografías.com
Introducción
l término de Programación Orientada a Objetos indica más una forma de diseño y
una metodología de desarrollo de software que un lenguaje de programación, ya
que en realidad se puede aplicar el Diseño Orientado a Objetos (En inglés
abreviado OOD, Object Oriented Design), a cualquier tipo de lenguaje de
programación.
El desarrollo de la OOP empieza a destacar durante la década de lo 80 tomando
en cuenta la programación estructurada, a la que engloba y dotando al
programador de nuevos elementos para el análisis y desarrollo de software.
Mantenibilidad
Cualidad que indica que un programa o sistema debe ser fácilmente modificable.
Es decir que los cambios en las condiciones externas (como la definición de una
nueva variable) implicarán modificaciones pequeñas en el programa / sistema. El
concepto de mantenibilidad implica que un programa, al igual que un ser vivo
debe ser capaz de adaptarse a un medio ambiente siempre cambiante.
Reusabilidad
Cualidad que nos indica que partes del programa ( en este caso objetos) pueden
ser reutilizados en la confección de otros programas. Ello implica que los objetos
definidos en un programa pueden ser extraídos del mismo e implantados en otro
sin tener que realizar modificaciones importantes en el código del objeto. El
objeto final es que el programador construya una librería de objetos que le
permita realizar programas basándose en la técnica de cortar y pegar. Esta extrae
(corta) código de otras aplicaciones ya realizadas y las implementa (pega) en la
aplicación a realizar donde, tras algunos retoques, la nueva aplicación estará lista
para funcionar. Como podrá observar el concepto de reusabilidad, permite
reducir el tiempo de realización , ganando en claridad, mantenibilidad y
productividad.
La encapsulación de datos se muestra como una herramienta poderosa que nos
permite ganar en tiempo de desarrollo y claridad, con el único coste adicional de
definir con precisión las entradas y salida de nuestras operaciones.
Poliformismo
El polimorfismo es una nueva característica aportada por la OOP. Esta propiedad
indica la posibilidad de definir varias operaciones con el mismo nombre,
diferenciándolas únicamente en los parámetros de entrada. Dependiendo del
objeto que se introduzca como parámetro de entrada, se elegirá automáticamente
cual de las operaciones se va a realizar.
Ya está habituado al operador <<suma>> que está presente en todos los
lenguajes de programación. Sin embargo, los operadores <<suma de
fracciones>> y <<suma de números complejos>> no existen en casi
ningún lenguaje de programación.
Los lenguajes OOP permiten definir un operador <<suma>> tal que reconozca
que tipo de objeto se le está aplicando, a través de operaciones de objetos.
Previamente deberá definir la fracción y el número complejo como una clase y la
operación suma como una operación de una clase.
Definiendo adecuadamente las operaciones suma de fracciones y suma de
números imaginarios, el operador suma devolverá, en el caso que los
operandos sean fracciones, una fracción y , en el caso de los números
imaginarios, otros número imaginario.
Es posible extender el concepto e incluso definir operaciones como suma de bases
de datos
Inconvenientes
• Es un lenguaje interpretado, lo que reduce su rendimiento y dificulta su
comercialización.
• Al proporcionar su propio entorno operativo, interactúa mal con otro tipo de
software o hardware
Eiffel
Es un lenguaje de programación escrito por Bertrand Meyer. Al contrario que
Smalltalk, incluye un preprocesador que permite la traducción de código Eiffel a
Lenguaje C. Es ideal para la ingeniería de software, que permite la encapsulación
, control de acceso y ámbito de las modificaciones. Como lenguaje orientado a
objetos <<puro>>, es presumiblemente el mejor por sus capacidades técnicas.
Los programas consisten en la declaración de colecciones de clases que incluyen
métodos. El punto primordial de un programa Eiffel es la declaración de clases,
que asocia atributos. Ambos, clases y atributos, son accesibles a partir de la
implementación de un concepto llamado característica. Una característica es, por
tanto, una agrupación de datos y unas formas típicas de tratarlos.
En Eiffel una declaración de clases puede incluir:
• Una lista de características exportables.
• Una lista de las clases antecesora: clases de la que ésta es una derivación
• Una lista de declaraciones de características.
Ventajas
• Es un lenguaje orientado a objetos <<puro>>
• Eiffel es un lenguaje de programación orientado hacia el diseño de grandes
aplicaciones. Las propiedades anteriores le hacen ideal para el diseño de
aplicaciones en grupos de trabajo.
• El paso intermedio a código C se puede considerar como una ventaja y no
como un inconveniente, ya que aquellas secciones que sean difíciles de tratar
con Eiffel pueden elaborarse a partir de código C. Su compatibilidad con C
asegura también su portabilidad hacia otros sistemas operativos
Desventajas
• El manejo de la memoria , un punto delicado en todos los lenguajes orientados
a objetos no es transparente como en el caso de Smalltalk.
• Las librerías de clases son reducidas
• El rendimiento es mayor que el de Smalltalk, pero al tener que incluir un
módulo Run-time dentro del ejecutable, su tamaño crece y su rendimiento
baja.
C++
Es un lenguaje de uso general que deriva del C.
Añade a su predecesor una serie de características que le convierten en un
lenguaje orientado a objetos. Dentro de estas características debemos resaltar:
• La abstracción de datos
• La programación orientada a objetos, ya que permite asociar a los datos las
funciones que los manipulan
www.desarrolloweb.com
Introducimos para los más profanos las bases sobre las que se asienta la
Programación Orientada a Objetos.
La programación Orientada a objetos (POO) es una forma especial de programar,
más cercana a como expresaríamos las cosas en la vida real que otros tipos de
programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para
escribir nuestros programas en términos de objetos, propiedades, métodos y otras
cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que
permita soltarnos un poco con este tipo de programación.
Motivación
Pues en un esquema POO el coche sería el objeto, las propiedades serían las
características como el color o el modelo y los métodos serían las funcionalidades
asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cómo modelizaríamos en un esquema POO una
fracción, es decir, esa estructura matemática que tiene un numerador y un
denominador que divide al numerador, por ejemplo 3/2.
Clases en POO
Propiedades en clases
Las propiedades o atributos son las características de los objetos. Cuando definimos
una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer
a la idea de que las propiedades son algo así como variables donde almacenamos
datos relacionados con los objetos.
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las
clases las llamamos métodos. Los métodos son como funciones que están asociadas
a un objeto.
Objetos en POO
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar
tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un
objeto a partir de una clase se llama instanciar (que viene de una mala traducción de
la palabra instace que en inglés significa ejemplar). Por ejemplo, un objeto de la
clase fracción es por ejemplo 3/5. El concepto o definición de fracción sería la clase,
pero cuando ya estamos hablando de una fracción en concreto 4/7, 8/1000 o
cualquier otra, la llamamos objeto.
Para crear un objeto se tiene que escribir una instrucción especial que puede ser
distinta dependiendo el lenguaje de programación que se emplee, pero será algo
parecido a esto.
Con la palabra new especificamos que se tiene que crear una instancia de la clase
que sigue a continuación. Dentro de los paréntesis podríamos colocar parámetros
con los que inicializar el objeto de la clase coche.
Estados en objetos
Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando
tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo
rojo o gris metalizado. El valor concreto de una propiedad de un objeto se llama
estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el
operador punto.
miCoche.color = rojo
Mensajes en objetos
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del
método que deseamos invocar.
miCoche.ponerseEnMarcha()
Otras cosas
Hay mucho todavía que conocer de la POO ya que sólo hemos hecho referencia a las
cosas más básicas. También existen mecanismos como la herencia y el polimorfismo
que son unas de las posibilidades más potentes de la POO.
La herencia sirve para crear objetos que incorporen propiedades y métodos de otros
objetos. Así podremos construir unos objetos a partir de otros sin tener que
reescribirlo todo.
El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que estamos
trabajando, y abstraernos para definir un código que sea compatible con objetos de
varios tipos.
Son conceptos avanzados que cuesta explicar en las líneas de ese informe. No hay
que olvidar que existen libros enteros dedicados a la POO y aquí solo pretendemos
dar un repaso a algunas cosas para que os suenen cuando tengáis que poneros
delante de ellas en los lenguajes de programación que debe conocer un desarrollador
del web.
• Objetos
• Clases
• Herencia
• Envío de mensajes
1. Objetos
Marca = Ford
Modelo = Focus
Color = Azul
Velocidad Máxima = 260 km/h
2. Las Clases
En el mundo real, normalmente tenemos muchos objetos del
mismo tipo. Por ejemplo, nuestro teléfono celular es sólo uno
de los miles que hay en el mundo. Si hablamos en términos de
la programación orientada a objetos, podemos decir que
nuestro objeto celular es una instancia de una clase conocida
como "celular". Los celulares tienen características (marca,
modelo, sistema operativo, pantalla, teclado, etc.) y
comportamientos (hacer y recibir llamadas, enviar mensajes
multimedia, transmisión de datos, etc.).
3. Herencia
Encapsulamiento
Ocultamiento
Resumen