La programación Orientada a Objetos es una
metodología que basa la estructura de los programas en torno a los
objetos.
Los lenguajes de POO ofrecen medios y
herramientas para describir los objetos manipulados por un programa. Más
que describir cada objeto individualmente, estos lenguajes proveen una
construcción que describe a un conjunto de objetos que poseen las
mismas propiedades.
Para comprender que es la programación
orientada a objetos, es necesario tener conocimiento de:
Objeto:
Es una entidad (tangible o intangible) que
posee características y acciones que realiza por sí solo o interactuando con
otros objetos.
Un objeto es una entidad caracterizada por
sus atributos propios y cuyo comportamiento está determinado por las acciones
o funciones que pueden modificarlo, así como también las acciones que
requiere de otros objetos. Un objeto tiene identidad e inteligencia y
constituye una unidad que oculta tanto datos como la descripción de su
manipulación. Puede ser definido como una encapsulación y una
abstracción: una encapsulación de atributos y servicios, y una abstracción del
mundo real.
Para el contexto del Enfoque Orientado a
Objetos (EOO) un objeto es una entidad que encapsula datos (atributos) y
acciones o funciones que los manejan (métodos). También para el EOO un
objeto se define como una instancia o particularización de una
clase.
Los objetos de interés durante el
desarrollo de software no sólo son tomados de la vida real (objetos visibles o
tangibles), también pueden ser abstractos. En general son entidades que
juegan un rol bien definido en el dominio del problema. Un libro, una
persona, un carro, un polígono, son apenas algunos ejemplos de objeto.
Cada objeto puede ser considerado como un
proveedor de servicios utilizados por otros objetos que son sus clientes.
Cada objeto puede ser a al vez proveedor y cliente. De allí que un
programa pueda ser visto como un conjunto de relaciones entre proveedores
clientes. Los servicios ofrecidos por los objetos son de dos tipos:
1.- Los datos, que llamamos
atributos.
2.- Las acciones o funciones, que llamamos
métodos.
Características Generales:
Un objeto se identifica por un nombre o
un identificador único que lo diferencia de los demás.
Ejemplo: el objeto Cuenta de Ahorros número 12345 es diferente al objeto Cuenta de Ahorros número 25789. En este caso el identificador que los hace únicos es el número de la cuenta.
Un objeto posee estados. El estado de un objeto está determinado por los valores que poseen sus atributos en un momento dado.
Un objeto tiene un conjunto de métodos. El comportamiento general de los objetos dentro de un sistema se describe o representa mediante sus operaciones o métodos. Los métodos se utilizarán para obtener o cambiar el estado de los objetos, así como para proporcionar un medio de comunicación entre objetos.
Un objeto tiene un conjunto de atributos. Los atributos de un objeto contienen valores que determinan el estado del objeto durante su tiempo de vida. Se implementan con variables, constantes y estructuras de datos (similares a los campos de un registro).
Los objetos soportan encapsulamiento. La estructura interna de un objeto normalmente está oculta a los usuarios del mismo. Los datos del objeto están disponibles solo para ser manipulados por los propios métodos del objeto. El único mecanismo que lo conecta con el mundo exterior es el paso de mensajes.
Ejemplo: el objeto Cuenta de Ahorros número 12345 es diferente al objeto Cuenta de Ahorros número 25789. En este caso el identificador que los hace únicos es el número de la cuenta.
Un objeto posee estados. El estado de un objeto está determinado por los valores que poseen sus atributos en un momento dado.
Un objeto tiene un conjunto de métodos. El comportamiento general de los objetos dentro de un sistema se describe o representa mediante sus operaciones o métodos. Los métodos se utilizarán para obtener o cambiar el estado de los objetos, así como para proporcionar un medio de comunicación entre objetos.
Un objeto tiene un conjunto de atributos. Los atributos de un objeto contienen valores que determinan el estado del objeto durante su tiempo de vida. Se implementan con variables, constantes y estructuras de datos (similares a los campos de un registro).
Los objetos soportan encapsulamiento. La estructura interna de un objeto normalmente está oculta a los usuarios del mismo. Los datos del objeto están disponibles solo para ser manipulados por los propios métodos del objeto. El único mecanismo que lo conecta con el mundo exterior es el paso de mensajes.
Clase:
La clase es la unidad de modularidad en el
EOO. La tendencia natural del individuo es la de clasificar los objetos según
sus características comunes (clase). Por ejemplo, las personas que asisten a la
universidad se pueden clasificar (haciendo abstracción) en estudiante, docente,
empleado e investigador.
La clase puede definirse como la
agrupación o colección de objetos que comparten una estructura común y un
comportamiento común.
Es una plantilla que contiene la
descripción general de una colección de objetos. Consta de atributos y métodos
que resumen las características y el comportamiento comunes de un conjunto de
objetos.
Todo objeto (también llamado instancia de
una clase), pertenece a alguna clase. Mientras un objeto es una entidad
concreta que existe en el tiempo y en el espacio, una clase representa solo una
abstracción.
Todos aquellos objetos que pertenecen a la
misma clase son descritos o comparten el mismo conjunto de atributos y métodos.
Todos los objetos de una clase tienen el
mismo formato y comportamiento, son diferentes únicamente en los valores que
contienen sus atributos. Todos ellos responden a los mismos mensajes.
Su sintaxis algorítmica es:
Clase <Nombre de la Clase>
…
FClase <Nombre de la Clase>;
Características Generales:
Una clase es un nivel de abstracción alto. La clase permite describir un conjunto de características comunes para los objetos que representa. Ejemplo: La clase Avión se puede utilizar para definir los atributos (tipo de avión, distancia, altura, velocidad de crucero, capacidad, país de origen, etc.) y los métodos (calcular posición en el vuelo, calcular velocidad de vuelo, estimar tiempo de llegada, despegar, aterrizar, volar, etc.) de los objetos particulares Avión que representa.
Una clase es un nivel de abstracción alto. La clase permite describir un conjunto de características comunes para los objetos que representa. Ejemplo: La clase Avión se puede utilizar para definir los atributos (tipo de avión, distancia, altura, velocidad de crucero, capacidad, país de origen, etc.) y los métodos (calcular posición en el vuelo, calcular velocidad de vuelo, estimar tiempo de llegada, despegar, aterrizar, volar, etc.) de los objetos particulares Avión que representa.
Un objeto es una instancia de una
clase. Cada objeto concreto dentro de un sistema es miembro de una clase
específica y tiene el conjunto de atributos y métodos especificados en la misma
Las clases se relacionan entre sí mediante una jerarquía. Entre las clases se establecen diferentes tipos de relaciones de herencia, en las cuales la clase hija (subclase) hereda los atributos y métodos de la clase padre (superclase), además de incorporar sus propios atributos y métodos.
Las clases se relacionan entre sí mediante una jerarquía. Entre las clases se establecen diferentes tipos de relaciones de herencia, en las cuales la clase hija (subclase) hereda los atributos y métodos de la clase padre (superclase), además de incorporar sus propios atributos y métodos.
Ejemplos, Superclase: Clase Avión
Subclases de Avión: Clase Avión Comercial, Avión de Combate, Avión de
Transporte
Relación entre Clase y Objeto:
Algorítmicamente,
las clases son descripciones netamente estáticas o plantillas que describen
objetos. Su rol es definir nuevos tipos conformados por atributos y
operaciones.
Por
el contrario, los objetos son instancias particulares de una clase. Las clases
son una especie de molde de fábrica, en base al cual son construidos los
objetos. Durante la ejecución de un programa sólo existen los objetos, no las
clases.
La
declaración de una variable de una clase NO crea el objeto.
La
asociación siguiente: <Nombre_Clase> <Nombre_Variable>; (por
ejemplo, Rectángulo R), no genera o no crea automáticamente un objeto
Rectángulo. Sólo indica que R será una referencia o una variable de objeto de
la clase Rectángulo.
Atributo:
Son
aquellos datos o variables que caracterizan al objeto y cuyos valores en un momento
dado indican su estado. Un
atributo es una característica de un objeto. Mediante los atributos se define
información oculta dentro de un objeto, la cual es manipulada solamente por los
métodos definidos sobre dicho objeto. Un
atributo consta de un nombre y un valor. Cada atributo está asociado a un tipo
de dato, que puede ser simple (entero, real, lógico, carácter, string) o
estructurado (arreglo, registro, archivo, lista, etc.)
Su sintaxis algorítmica es: <Modo de Acceso> <Tipo de dato> <Nombre del Atributo>;
Su sintaxis algorítmica es: <Modo de Acceso> <Tipo de dato> <Nombre del Atributo>;
Los
modos de acceso son:
-Público: Atributos (o Métodos) que son accesibles fuera de la clase. Pueden ser llamados por cualquier clase, aun si no está relacionada con ella. Este modo de acceso también se puede representar con el símbolo +
-Público: Atributos (o Métodos) que son accesibles fuera de la clase. Pueden ser llamados por cualquier clase, aun si no está relacionada con ella. Este modo de acceso también se puede representar con el símbolo +
-Privado: Atributos (o Métodos) que sólo son accesibles dentro de la
implementación de la clase. También se puede representar con el símbolo –
Protegido: Atributos (o Métodos) que son accesibles para la propia clase y sus
clases hijas (subclases). También se puede representar con el símbolo #
Método:
Son
las operaciones (acciones o funciones) que se aplican sobre los objetos y que
permiten crearlos, cambiar su estado o consultar el valor de sus atributos.
Los
métodos constituyen la secuencia de acciones que implementan las operaciones
sobre los objetos. La implementación de los métodos no es visible fuera de
objeto.
La
sintaxis algorítmica de los métodos expresados como funciones y acciones es:
Para funciones se pueden usar cualquiera de
estas dos sintaxis:
<Modo de Acceso> Función <Nombre>
[(Lista Parámetros)]: <Descripción del Tipo de datos>
Para
acciones:
<Modo de Acceso> Acción <Nombre>
[(Lista Parámetros)] donde los parámetros son opcionales
Ejemplo:
Un rectángulo es un objeto caracterizado por los atributos Largo y Ancho, y por
varios métodos, entre otros Calcular su área y Calcular su perímetro.
Motivación:
Durante años, los programadores se han dedicado a construir aplicaciones
muy parecidas que resolvían una y otra vez los mismos problemas.
Para conseguir que los esfuerzos de los programadores puedan ser utilizados por
otras personas se creó la POO. Que es una serie de normas de realizar las
cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo,
de manera que consigamos que el código se pueda reutilizar.
La POO no es difícil, pero es una manera especial de pensar, a veces
subjetiva de quien la programa, de manera que la forma de hacer las cosas puede
ser diferente según el programador. Aunque podamos hacer los
programas de formas distintas, no todas ellas son correctas, lo difícil no es
programar orientado a objetos sino programar bien. Programar bien es importante
porque así nos podemos aprovechar de todas las ventajas de la POO.
Cómo se piensa en objetos:
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida
real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un
esquema de POO. Diríamos que el coche es el elemento principal que tiene una
serie de características, como podrían ser el color, el modelo o la marca.
Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en
marcha, parar o aparcar.
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.
La fracción será el objeto y tendrá dos propiedades, el numerador y el
denominador. Luego podría tener varios métodos como simplificarse, sumarse con
otra fracción o número, restarse con otra fracción, entre otros.