El concepto de Sistema de Programación Orientado a Objetos - Object Oriented Programming System (OOPS), agrupa un conjunto de técnicas que nos permiten desarrollar y mantener mucho más fácilmente programas de una gran complejidad.
La orientación a objetos es una forma de hacer frente a la comprensión y solución de problemas, usando modelos organizados a partir de conceptos del mundo real. Su pieza fundamental es el objeto, el cual combina en una sola entidad, los datos que lo identifican y su comportamiento. En particular, nosotros utilizaremos la orientación a objetos para analizar, diseñar e implementar programas de computadora, es decir, vamos a efectuar programación orientada a objetos. Entonces lo primero que tenemos que aprender si queremos hacer programas orientados a objetos, es conocer el concepto de lo que es: Clase, Objeto, Herencia, Encapsulación y Polimorfismo. Estas son las ideas más básicas que todo aquel que trabaja en POO debe de comprender y manejar constantemente, es por lo tanto de suma importancia que lo entienda claramente.
Características del paradigma orientado a objetos (clases, objetos, herencia, polimorfismo, generalización):
Objeto:
Un objeto se puede definir desde el punto de vista conceptual como una entidad individual de un sistema y que se caracteriza por un estado y un comportamiento. Desde el punto de vista de implementación un objeto es una entidad que posee un conjunto de datos y un conjunto de operaciones (funciones o métodos).
Los datos se denominan también atributos y componen la estructura del objeto y las operaciones -también llamadas métodos- representan los servicios que proporciona el objeto.
Clase:
Las clases son declaraciones o abstracciones de objetos. Una clase es un contenedor de uno o más datos (variables o propiedades miembro) junto a las operaciones de manipulación de dichos datos (funciones/métodos).
En POO los objetos son miembros de clases. En esencia, una clase es un tipo de datos al igual que cualquier otro tipo de dato definido en un lenguaje de programación. La diferencia reside en que la clase es un tipo de dato que contiene datos y funciones.
Una clase es, por consiguiente, una descripción de un número de objetos similares.
En C una clase es una estructura de dato o tipo de dato que contiene funciones (métodos) como miembros y datos. Una clase es una descripción general de un conjunto de objetos similares. Por definición todos los objetos de una clase comparten los mismos atributos (datos) y las mismas operaciones (métodos). Una clase encapsula las abstracciones de datos y operaciones necesarias para describir una entidad u objeto del mundo real.
Sintaxis de una clase:
Class nombreClase
{
miembros
}
Generalización:
La generalización es la propiedad que permite compartir información entre dos entidades evitando la redundancia. En el comportamiento de objetos existen con frecuencia propiedades que son comunes en diferentes objetos y esta propiedad se denomina generalización.
Por ejemplo, máquinas lavadoras, frigoríficos, hornos de microondas, tostadoras, lavavajillas, etc., son todos electrodomésticos (aparatos del hogar). En el mundo de la orientación a objetos, cada uno de estos aparatos es un subclase de la clase Electrodoméstico y a su vez Electrodoméstico es una superclase de todas las otras clases (máquinas lavadoras, frigoríficos, hornos de microondas, tostadoras, lavavajillas,...).
Especialización:
El proceso inverso de la generalización por el cual se definen nuevas clases a partir de otras ya existentes se denomina especialización.
Herencia:
En orientación a objetos, el mecanismo que implementa la propiedad de generalización se denomina herencia. La herencia permite definir nuevas clases a partir de otras clases ya existentes, de modo que presentan las mismas características y comportamiento de éstas, así como otras adicionales. Se refiere a compartir atributos y métodos entre clases, que se relacionan de manera jerárquica.
Polimorfismo:
La propiedad de polimorfismo es aquella en que una operación tiene el mismo nombre en diferentes clases, pero se ejecuta de diferentes formas en cada clase.
Es una característica de la programación orientada a objetos, que significa que un mismo método puede tener diferentes maneras de realizarse.
Abstracción:
La abstracción es la propiedad de los objetos que consiste en tener en cuenta sólo los aspectos más importantes desde un punto de vista determinado y no tener en cuenta los restantes aspectos. El término abstracción que se suele utilizar en programación se refiere al hecho de diferenciar entre las propiedades externas de una entidad y los detalles de la composición interna de dicha entidad.
Encapsulación:
El encapsulado o encapsulación de datos es el proceso de agrupar datos y operaciones relacionadas bajo la misma unidad de programación. En el caso de los objetos que poseen las mismas características y comportamiento se agrupan en clases, que no son más que unidades o módulos de programación que encapsulan datos y operaciones.