Conceptos y ejemplos de programación orientada a objetos que todo programador debe conocer

Publicado: 2021-02-26

En este artículo, cubriremos los conceptos básicos sobre la programación orientada a objetos y discutiremos los términos comúnmente utilizados: abstracción, encapsulación, herencia y polimorfismo.

Para empezar, OOP es una metodología de programación que requiere que los programadores creen objetos y los utilicen a lo largo del programa dentro de las funciones que requieren dichos objetos para su operación. La razón por la cual el concepto OOP se usa ampliamente en Java es que permite la reutilización del código mientras se mantiene la seguridad.

Antes de hablar de los cuatro pilares de la programación orientada a objetos, familiaricémonos con los términos genéricos que escuchamos muy a menudo cuando usamos cualquiera de los lenguajes orientados a objetos: Java, python, c++.

Tabla de contenido

Clase

Una clase es una colección de objetos que define un conjunto de propiedades que es común a todos los objetos de un tipo particular. También se le puede llamar modelo para crear objetos. Una clase implica los siguientes componentes:

Nombre de clase: El nombre dado a una clase que comienza con un alfabeto en mayúscula.

Modificadores: según la funcionalidad de la clase, los modificadores pueden ser públicos, privados o predeterminados.

Cuerpo : El cuerpo de la clase contiene todos los códigos de los objetos presentes en la clase. Esto podría variar desde declarar cualquier variable o crear cualquier constructor o método que contenga el funcionamiento de un objeto.

Objeto

Un objeto se define como una instancia de una clase y contiene entidades de la vida real. Por ejemplo, para una clase llamada Animales, sus objetos serán un gato, un perro, un elefante y otros. Cada objeto tiene su propia identidad, atributo y comportamiento. El siguiente código muestra el uso de clase, objeto y método durante la programación en el lenguaje Java.

Métodos

Los métodos se definen dentro de una clase y se utilizan para realizar una función específica. El método puede contener o no un parámetro de entrada. El siguiente código muestra el uso de clase, objeto y método durante la programación en el lenguaje Java.

En el código anterior, Jugador es el nombre dado a nuestra clase, mientras que carreras es un parámetro pasado en el método Batsman que devuelve las carreras anotadas por él cuando se llama a través de un objeto llamado myobj.

Modificadores de acceso

Los modificadores de acceso en Java definen la accesibilidad o el alcance de un método o constructor o la clase. Los cuatro tipos de modificadores de acceso son:

  1. Público : el código escrito dentro de una clase es accesible para otras clases.
  2. Privado : el código escrito solo es accesible dentro de esa clase específica.
  3. Predeterminado : el código escrito es accesible dentro del mismo paquete.
  4. Protegido : se puede acceder al código dentro de un paquete y también a través de una subclase. En ausencia de una clase secundaria, no se puede acceder al código.

Ahora procedamos y hablemos sobre el quid de la programación orientada a objetos.

Herencia

El término herencia se refiere a heredar las propiedades de una clase a otra. Las propiedades se refieren a los atributos y métodos de la clase padre. La clase padre es aquella clase cuyas propiedades deben ser heredadas por otras clases. Las clases que heredan las propiedades de la clase principal se denominan clase secundaria o subclase. Para heredar las propiedades de la clase principal en la clase secundaria, se usa una palabra clave llamada extends .

En el ejemplo anterior, el Patrocinador es la clase principal y el propietario es su atributo. Hemos creado una subclase llamada Equipo que hereda la clase principal: Patrocinador. Hemos creado un objeto de Team que puede acceder a las propiedades de la clase padre. La salida del código anterior es:

Polimorfismo

Como sugiere el nombre, el polimorfismo es la capacidad de una variable o una función de existir en múltiples formas. El polimorfismo permite al programador realizar diferentes tareas usando la misma variable o función. Un ejemplo de polimorfismo de la vida real sería: considere un campo abierto, ahora este campo se puede usar para practicar deportes.

Además, también podría utilizarse para organizar bodas y conciertos. Por último, el mismo suelo se puede utilizar para el estacionamiento de vehículos. De esto, podemos inferir que una sola variable puede tener múltiples implementaciones dependiendo de su uso.

El polimorfismo generalmente nos encontramos con dos términos, a saber: sobrecarga de métodos y anulación de métodos .

En la sobrecarga de métodos , un solo método se puede usar de muchas maneras y realizar diferentes funciones. Los métodos tendrán el mismo nombre pero se pueden usar diferentes parámetros como entrada.

En Method Overriding , el método de la clase principal puede ser anulado por la clase secundaria. Con esto, el mismo método puede funcionar de manera diferente cuando lo invoca la clase principal y la clase secundaria.

Un ejemplo del polimorfismo se muestra a continuación:

En este ejemplo, usando el mismo método podemos realizar múltiples tareas. El mismo método Voice cuando se usa en Bird generaría "Turr Turr" y cuando se usa con Duck generaría "Quack Quack". La instantánea de la salida se muestra a continuación:

Abstracción

La abstracción es el proceso de ocultar ciertos datos a los usuarios y mostrarles solo la información requerida. Por ejemplo, mientras conducimos un automóvil, no nos preocupamos por las funciones o mecanismos internos. Lo que nos muestra son la velocidad a la que se conduce el coche y los litros de gasolina disponibles. Todos los demás datos marginados no se muestran al conductor.

La palabra clave abstract se usa para métodos y clases mientras se realiza la abstracción. Para una clase abstracta, no podemos crear un objeto mientras que el método abstracto no debe incluir un cuerpo. Si se viola cualquiera de las dos reglas, la salida generará un error.

Aquí, hemos creado un objeto de la subclase, Pato, que se hereda de la clase principal, Pájaro. La salida se muestra a continuación:

Encapsulación

La encapsulación es el proceso de unir el código y los datos en una sola unidad. Aquí, las variables de una clase están ocultas de otras clases (usando la palabra clave private ), pero solo se puede acceder a ellas a través de una función miembro. Las funciones setter y getter se utilizan para acceder a las variables privadas de una clase que es abstracta.

Hasta ahora, hemos cubierto todo lo relacionado con la programación orientada a objetos usando Java. Antes de concluir, veamos algunas de las ventajas del concepto OOP.

  1. El código se puede reutilizar fácilmente y, por lo tanto, ahorra mucho tiempo y dinero para el desarrollo de códigos.
  2. Ayuda a diseñar el código de una manera bien estructurada para que cualquier programador nuevo no tenga que pasar largas horas para entender el código.
  3. Además de ayudar a los usuarios a escribir código de manera eficiente, se asegura de que la seguridad no se vea comprometida.

Pago : Preguntas y respuestas de la entrevista OOP

Aprenda cursos de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Conclusión

Para concluir, en este blog hemos cubierto los conceptos básicos de los OOP. Estos conceptos se utilizan ampliamente en la industria y otras aplicaciones. Para convertirse en un programador competente, uno debe tener una sólida comprensión de estos conceptos. En los próximos blogs, descubriremos varios otros conceptos de programación esenciales que lo ayudarán a desarrollar experiencia en este dominio.

Si está interesado en obtener más información sobre el desarrollo de software de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos y asignaciones, estatus de exalumno de IIIT-B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.]

¿Qué es un factorial?

Un factorial es una operación matemática que cuenta el producto de un número dado y todos los números debajo de él. Un factorial es un producto que indica cuántas veces se multiplica un número por uno. Por ejemplo, el factorial de 5 es 5x4x3x2x1, que es igual a 120. El factorial de 1 es 1 y el factorial de 0 también es 1. El programa para encontrar el factorial de un número es la pregunta de entrevista más común y es algo eso debería estar en la punta de tu mano.

¿Cómo escribir un programa de recursividad factorial?

El factorial de un número n se define como n! = 1 × 2 × 3 × 4 × … × n. El factorial de 5 es 120. La función factorial se define como factorial(5) = 120. Una función recursiva es una función que se llama a sí misma. Este es un ejemplo de una función factorial en estilo recursivo factorial(n) = n * factorial(n - 1). Escribir un programa de recursión factorial es muy simple y el código es muy similar a la versión iterativa. Para escribir la versión iterativa, usamos una variable llamada n y la incrementamos en uno y la multiplicamos con la variable llamada prod, que realiza un seguimiento de los valores sucesivos de n. El valor de salida también se almacena en la variable llamada prod. En la versión recursiva, aún usa una variable llamada n. Sin embargo, no necesita una variable para almacenar el valor de prod y puede devolver prod directamente desde la función.

¿Qué es la recursión en la programación?

La palabra recursión se deriva de la palabra latina recurrere, que significa volver. En la mayoría de los lenguajes de programación, una función que se llama a sí misma se llama recursividad. Este proceso de bucle continúa hasta que se alcanza el caso base, que no está definido en ninguna función recursiva. La recursividad es una técnica eficaz para resolver un problema de forma estructurada y organizada. Es una buena estrategia de programación. Por ejemplo, el problema de la serie de Fibonacci, el problema factorial, etc. se pueden resolver tanto de manera iterativa como recursiva.