En que se basa la programacion orientada a objetos

Principios de programación orientada a objetos
Una de las formas más efectivas de entender realmente la programación orientada a objetos es ver cómo se implementan en última instancia los principales conceptos de la programación orientada a objetos a bajo nivel. Este artículo utiliza este enfoque describiendo cómo implementar la programación orientada a objetos en el lenguaje de programación C. La experiencia demuestra que los desarrolladores de software que entienden los conceptos a bajo nivel los aplican de forma más eficiente y con mayor confianza que los desarrolladores que sólo se han topado con los conceptos a alto nivel.
Aunque los conceptos fundamentales de la programación orientada a objetos se han asociado tradicionalmente a lenguajes orientados a objetos, como Smalltalk, C++ o Java, puede implementarlos en casi cualquier lenguaje de programación, incluido C portátil y conforme a los estándares (norma ISO-C90).
Si se limita a desarrollar programas de usuario final en C, pero también desea hacer POO, probablemente debería utilizar C++ en lugar de C. En comparación con C++, la POO en C puede ser engorrosa y propensa a errores, y rara vez ofrece alguna ventaja de rendimiento.
Sin embargo, si construyes bibliotecas de software o frameworks, los conceptos de POO pueden ser muy útiles como mecanismos primarios de organización del código. En ese caso, la mayoría de las dificultades de hacer POO en C pueden ser confinadas a la librería y pueden ser efectivamente ocultadas a los desarrolladores de la aplicación. Este documento tiene este caso de uso primario en mente.
Conceptos de programación orientada a objetos
En el tutorial anterior, introducción a las clases, has visto tanto la abstracción como la encapsulación. La clase BankAccount proporcionaba una abstracción para el concepto de cuenta bancaria. Puedes modificar su implementación sin afectar al código que utiliza la clase BankAccount. Las clases BankAccount y Transaction encapsulan los componentes necesarios para describir estos conceptos en el código.
En este tutorial, usted extenderá esa aplicación para hacer uso de la herencia y el polimorfismo para agregar nuevas características. También añadirás características a la clase BankAccount, aprovechando las técnicas de abstracción y encapsulación que aprendiste en el tutorial anterior.
Después de construir este programa, recibirás peticiones para añadirle características. Funciona muy bien en la situación en la que sólo hay un tipo de cuenta bancaria. Con el tiempo, las necesidades cambian y se solicitan otros tipos de cuentas:
Todas estas cuentas diferentes son similares a la clase BankAccount definida en el tutorial anterior. Podrías copiar ese código, renombrar las clases y hacer modificaciones. Esa técnica funcionaría a corto plazo, pero daría más trabajo con el tiempo. Cualquier cambio se copiaría en todas las clases afectadas.
Ejemplos de programación orientada a objetos
Generalmente en R, la programación funcional es mucho más importante que la programación orientada a objetos, porque normalmente se resuelven problemas complejos descomponiéndolos en funciones simples, no en objetos simples. Sin embargo, hay razones importantes para aprender cada uno de los tres sistemas:
El objetivo de este breve capítulo introductorio es proporcionarle un vocabulario importante y algunas herramientas para identificar los sistemas de programación orientada a objetos. Los siguientes capítulos se sumergen en los detalles de los sistemas OOP de R:
Este libro se centra en la mecánica de la programación orientada a objetos, no en su uso efectivo, y puede ser difícil de entender completamente si no has hecho programación orientada a objetos antes. Puede que se pregunte por qué he decidido no proporcionar una cobertura más útil de forma inmediata. Me he centrado en la mecánica aquí porque necesita estar bien descrita en algún lugar (escribir estos capítulos requirió una cantidad considerable de lectura, exploración y síntesis por mi parte), y el uso efectivo de la programación orientada a objetos es lo suficientemente complejo como para requerir el tratamiento de un libro; simplemente no hay suficiente espacio en Advanced R para cubrirlo en la profundidad requerida.
Programación orientada a objetos c++
La programación orientada a objetos (POO) es un paradigma de programación basado en el concepto de "objetos", que pueden contener datos y código. Los datos se presentan en forma de campos (a menudo conocidos como atributos o propiedades), y el código, en forma de procedimientos (a menudo conocidos como métodos).
Una característica común de los objetos es que los procedimientos (o métodos) están vinculados a ellos y pueden acceder a los campos de datos del objeto y modificarlos. En este tipo de programación orientada a objetos, se suele utilizar un nombre especial como this o self para referirse al objeto actual. En la programación orientada a objetos, los programas informáticos se diseñan a partir de objetos que interactúan entre sí[1][2] Los lenguajes de programación orientada a objetos son diversos, pero los más populares se basan en clases, lo que significa que los objetos son instancias de clases, que también determinan sus tipos.
Muchos de los lenguajes de programación más utilizados (como C++, Java, Python, etc.) son multiparadigma y soportan la programación orientada a objetos en mayor o menor grado, normalmente en combinación con la programación imperativa y procedimental.