Tipos de clases en programacion orientada a objetos

Paradigma de programación orientada a objetos
La programación orientada a objetos (POO) es un proceso preferente de desarrollo de software. Conozca la programación orientada a objetos y explore sus objetos, clases, métodos y funciones. Comprenda los cuatro conceptos básicos de la programación orientada a objetos: abstracción, encapsulación, herencia y polimorfismo.
¿Qué es un objeto en programación? La programación orientada a objetos, o POO, es un enfoque para la resolución de problemas en el que todos los cálculos se llevan a cabo utilizando objetos. Un objeto es un componente de un programa que sabe cómo realizar ciertas acciones y cómo interactuar con otros elementos del programa. Los objetos son las unidades básicas de la programación orientada a objetos. Un ejemplo sencillo de objeto sería una persona. Lógicamente, se esperaría que una persona tuviera un nombre. Esto se consideraría una propiedad de la persona. También se puede esperar que una persona sea capaz de hacer algo, como caminar o conducir. Esto se consideraría un método de la persona. En la programación orientada a objetos, el código se organiza en torno a objetos. Una vez que tienes tus objetos, pueden interactuar entre sí para hacer que algo suceda. Digamos que quieres tener un programa en el que una persona se sube a un coche y lo conduce de A a B. Empezarías describiendo los objetos, como una persona y un coche. Eso incluye los métodos: una persona sabe conducir un coche, y un coche sabe lo que es ser conducido. Una vez que tienes los objetos, los juntas para que la persona se suba al coche y conduzca.
Objeto de clase
Hay algunos libros sobre programación orientada a objetos que te dirán que las piedras angulares de la programación orientada a objetos son la encapsulación, la herencia y el polimorfismo, o algo por el estilo. Esto es bastante típico de la visión clásica de la programación orientada a objetos, y no hay nada malo en ello per se, es sólo que hemos generalizado algunas ideas y desacoplado cosas aquí y allá desde entonces.
Hay dos tipos fundamentalmente diferentes de objetos, creados y diseñados con diferentes propósitos en mente, utilizando diferentes técnicas. Etiquetamos estos dos tipos como "objetos simples" y "entidades de comportamiento", aunque estas etiquetas son nuestras. Los objetos simples tienden a representar valores, como colores, coordenadas, vectores, cadenas, etc., mientras que las entidades de comportamiento tienden a representar componentes del sistema, como servicios, colas de mensajes, motores, lógica de aplicación, etc.
Las entidades de comportamiento tienden a mantener su estado en varias colecciones de objetos simples, como un servidor que mantiene una lista de usuarios registrados. Las entidades de comportamiento tienden a centrarse en el comportamiento (por decir algo obvio), y en configurar o adaptar ese comportamiento en diversas circunstancias. Los mecanismos de paso de mensajes, incluido el polimorfismo, tienden a ser fundamentales para la construcción de entidades de comportamiento. Como resultado, se tiende a obtener familias enteras de entidades similares, por ejemplo, un servidor FTP, un servidor ssh, un servidor HTTP, etc. que tienen funcionalidades comunes (como aceptar conexiones).
Conceptos de programación orientada a objetos
Cuando se crea un objeto mediante un constructor de la clase, el objeto resultante se denomina instancia de la clase, y las variables miembro específicas del objeto se denominan variables de instancia, en contraste con las variables de clase compartidas por toda la clase.
En ciertos lenguajes, las clases son, de hecho, sólo una característica en tiempo de compilación (no se pueden declarar nuevas clases en tiempo de ejecución), mientras que en otros lenguajes las clases son ciudadanos de primera clase, y generalmente son ellos mismos objetos (típicamente de tipo Clase o similar). En estos lenguajes, una clase que crea clases dentro de sí misma se denomina metaclase.
En su uso más informal, la gente suele referirse a la "clase" de un objeto, pero en sentido estricto los objetos tienen un tipo: la interfaz, es decir, los tipos de las variables miembro, las firmas de las funciones miembro (métodos) y las propiedades que éstas satisfacen. Al mismo tiempo, una clase tiene una implementación (concretamente la implementación de los métodos), y puede crear objetos de un tipo dado, con una implementación dada[3]. En términos de teoría de tipos, una clase es una implementación-una estructura de datos concreta y una colección de subrutinas-mientras que un tipo es una interfaz. Diferentes clases (concretas) pueden producir objetos del mismo tipo (abstracto) (dependiendo del sistema de tipos); por ejemplo, el tipo Pila puede implementarse con dos clases: PilaPequeña (rápida para pilas pequeñas, pero poco escalable) y PilaEscalable (bien escalable, pero con gran sobrecarga para pilas pequeñas). Del mismo modo, una clase dada puede tener varios constructores diferentes.
Tipos de clases java
Así que hay diferentes tipos de clases que hemos oído o encontrado, y diferentes palabras clave que utilizamos para crear una clase. Pero sin entender la verdadera razón por la que estas variedades se introducen y cómo nos ayudará, un programador nunca será capaz de utilizarlos de manera eficiente. El/ella terminará creando una simple clase sin ninguna palabra clave especial y sin considerar ningún tipo significativo de clase.
Anteriormente en C++, al programar clases con diferentes comportamientos característicos, no había palabras clave en las clases. Simplemente, no había diferentes tipos de clases. Se utilizaba una simple clase con diferentes modificadores de acceso, diferente implementación de métodos y/o diferentes palabras clave en los métodos. Los desarrolladores tenían que tener en cuenta muchas cosas para conseguir un comportamiento característico para una clase.
Una clase es un plano de una entidad/objeto sobre el que quieres trabajar en tu programa. Es lo que existe sobre el papel. No es la entidad/objeto real, sólo describe las propiedades de la clase y cómo funcionará. Es el objeto de la clase que realmente se ejecuta en un programa para realizar una acción (obtener sus detalles funcionales) utilizando sus campos y propiedades.