Programacion orientacion a objetos

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.
Lenguajes de programación orientados a objetos
La programación orientada a objetos consiste en modelar un sistema como una colección de objetos, donde cada objeto representa algún aspecto concreto del sistema. Los objetos contienen funciones (o métodos) y datos. Un objeto proporciona una interfaz pública a otro código que quiera utilizarlo, pero mantiene su propio estado interno privado; otras partes del sistema no tienen que preocuparse de lo que ocurre dentro del objeto.Clases e instanciasCuando modelamos un problema en términos de objetos en programación orientada a objetos, creamos definiciones abstractas que representan los tipos de objetos que queremos tener en nuestro sistema. Por ejemplo, si estamos modelando una escuela, es posible que queramos tener objetos que representen a los profesores. Cada profesor tiene algunas propiedades en común: todos tienen un nombre y una asignatura que imparten. Además, cada profesor puede hacer ciertas cosas: todos pueden calificar un trabajo y pueden presentarse a sus alumnos al comienzo del curso, por ejemplo.
Por sí sola, una clase no hace nada: es una especie de plantilla para crear objetos concretos de ese tipo. Cada profesor concreto que creamos se llama instancia de la clase Profesor. El proceso de creación de una instancia se realiza mediante una función especial llamada constructor. Pasamos valores al constructor para cualquier estado interno que queramos inicializar en la nueva instancia.
Programación orientada a objetos java
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, suele utilizarse 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.
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.