El lenguaje puro orientado a objetos o el lenguaje completo orientado a objetos son lenguajes completamente orientados a objetos que admiten o tienen características que tratan todo lo que está dentro del programa como objetos. No admite tipos de datos primitivos (como int, char, float, bool, etc.). Hay siete cualidades que deben cumplirse para que un lenguaje de programación sea puramente orientado a objetos. Están:
- Encapsulación/Ocultación de datos
- Herencia
- Polimorfismo
- Abstracción
- Todos los tipos predefinidos son objetos.
- Todos los tipos definidos por el usuario son objetos
- Todas las operaciones realizadas en objetos deben ser solo a través de métodos expuestos en los objetos.
Ejemplo: Smalltalk
¿Por qué Java no es un lenguaje puro orientado a objetos?
Java admite las propiedades 1, 2, 3, 4 y 6, pero no admite las propiedades 5 y 7 indicadas anteriormente. El lenguaje Java no es un lenguaje orientado a objetos puro, ya que contiene estas propiedades:
- Tipo de datos primitivos ej. int, long, bool, float, char, etc. como objetos: Smalltalk es un lenguaje de programación orientado a objetos «puro» a diferencia de Java y C++, ya que no hay diferencia entre valores que son objetos y valores que son tipos primitivos. En Smalltalk, los valores primitivos como números enteros, booleanos y caracteres también son objetos.
En Java, tenemos tipos predefinidos como no objetos (tipos primitivos).int a = 5; System.out.print(a);
- La palabra clave estática: cuando declaramos una clase como estática, se puede usar sin el uso de un objeto en Java. Si estamos usando una función estática o una variable estática, entonces no podemos llamar a esa función o variable usando el punto (.) o la característica orientada a objetos que desafía el objeto de clase.
- Clase contenedora: la clase contenedora proporciona el mecanismo para convertir primitivo en objeto y objeto en primitivo. En Java, puede usar Integer, Float, etc. en lugar de int, float, etc. Podemos comunicarnos con objetos sin llamar a sus métodos. ex. utilizando operadores aritméticos.
String s1 = "ABC" + "A" ;
Incluso el uso de clases Wrapper no convierte a Java en un lenguaje OOP puro, ya que internamente utilizará operaciones como Unboxing y Autoboxing. Entonces, si crea en lugar de int Integer y realiza cualquier operación matemática en él, bajo el capó, Java usará solo el tipo primitivo int.
public
class
BoxingExample
{
public
static
void
main(String[] args)
{
Integer i =
new
Integer(
10
);
Integer j =
new
Integer(
20
);
Integer k =
new
Integer(i.intValue() + j.intValue());
System.out.println(
"Output: "
+ k);
}
}
En el código anterior, hay 2 problemas en los que Java no funciona como OOP puro:
- Al crear la clase Integer, está utilizando el tipo primitivo «int», es decir, los números 10, 20.
- Mientras hace la suma, Java está usando el tipo primitivo «int».
Artículo relacionado: ¿Por qué C++ es parcialmente un lenguaje orientado a objetos?
Este artículo es una contribución de Sangeet Anand . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA