? Orientados a objetos lenguajes de programación como C + + ( "C Plus Plus " o CPP ) siguen un paradigma de la programación orientada a la reutilización de código y la construcción de jerarquías estructurales en dicho código. Los desarrolladores crean clases para encapsular los datos en la funcionalidad en pedazos lógicos . También hacen porque ciertas técnicas de programación orientada a objetos , como herencia, permiten la construcción de las clases más complejas a partir de otras más simples . Los desarrolladores también pueden controlar cómo las clases se implementan mediante clases de plantilla de diseño llamada "interfaces" o "clases abstractas" que determinan la forma en que otros programadores utilizan esas clases. Objetos y Herencia
Al crear clases y objetos de un programa en C + + , el programador descubre a menudo que las diferentes clases se superponen o compartir una funcionalidad similar. A continuación, tiene dos opciones : escribir el código funcional para ambas clases , o crear una clase "base " con todos los rasgos comunes y las características de esas clases. Entonces , las dos clases pueden "inherentes" esos rasgos al tiempo que añade su propia cuenta. Por ejemplo , si el programador escribe " Manager" clases para una aplicación de negocio " asociado " y , podría crear una sola clase "Empleado" que contiene la funcionalidad común y entre los socios y gerentes .
Virtual Funciones
clase base
para cualquier otra clase puede contener definiciones acerca de lo que las clases pueden hacer. y la información que contienen. Por lo tanto , la clase de empleado del ejemplo puede contener una función para calcular salario que contiene una fórmula específica . El Administrador de clases y Asociados inherente de que la función , y por lo tanto la fórmula . Sin embargo , los gerentes y asociados pueden requerir diferentes fórmulas para el cálculo de salario. En este caso , la clase base podría contener una función "virtual " . La clase base podría definir un comportamiento por defecto , pero las clases hijas entonces podría crear sus propias fórmulas y funciones si es necesario.
Clases abstractas
Junto virtuales funciones , hay funciones virtuales "puras" . Funciones virtuales puras no contienen una definición de función . Más bien, simplemente definir un nombre de función . Así , por ejemplo , la función de cálculo de los sueldos de la clase base Empleado sería declarado como virtual sin necesidad de una definición. Entonces , las clases de administrador y Asociados definirían sus propias funciones para el cálculo de salario. Cuando una clase contiene una o más funciones puramente virtuales , se denomina una clase abstracta . Esto se debe a las clases con funciones virtuales puras no pueden convertirse en objetos.
C + + Interfaces Interfaces
Desde clases abstractas no pueden convertirse en objetos , que se llaman "interfaces ". Son clases abstractas , que a menudo contienen sólo las funciones virtuales puras que sirven como una plantilla para otras clases comunes . Así que si el ejemplo del empleado sólo contiene funciones virtuales puras , entonces el programador diseña el Manager y clases Asociados a heredar de los empleados como una interfaz , lo que significa que deben implementar las funciones virtuales puras de la clase Empleado. Mientras que la ISO C + + estándar no contiene la palabra clave específica "interfaz" , la implementación de Microsoft de C + + hace ( fuente 3 ) . He aquí un ejemplo para ilustrar este relationship.class Empleado {
público : calcSalary int virtual ( ) = 0 ; //función virtual pura
privada : int ID ;} ;
< p> clase Asociado: public Empleado {
público : calcSalary int ( ) {//Asociado * debe implementar * calcSalary u obtener un código de error /* * /} } ;