Blog
50 Preguntas y Respuestas de OOPS más importantes para Entrevistas
- Publicado por: Rafael Fernandez
- Categoría: Blog Nivel Intermedio Python

Si estás buscando empleo sobre programación OOPS, es decir, programación orientada a objetos a continuación podrás encontrar una selección de las preguntas de entrevista más frecuentes que vas a poder enfrentar durante una entrevista de trabajo de OOPS. Tanto para programadores avanzados como principiantes, se incluyen conceptos básicos que se deben dominar de cualquier manera, sea para una entrevista o para entender más la programación orientada a objetos.
Las siglas OOPS definen el Sistema de Programación Orientada a Objetos (Object Oriented Programming system), con el cual los programas pasan a ser considerados una colección de objetos. Cada uno de estos objetos es una parte de una clase.
Los siguientes son los conceptos de OOPS:
- Encapsulación
- Herencia
- Polimorfismo
- Abstracción.
Es la representación de un cierto tipo de objeto. Es el plan que define las características de un objeto.
Un objeto es parte de una clase. Tiene su propio estado, comportamiento y definición.
La encapsulación es una característica del objeto y guarda todos los datos ocultos. Estos datos (ocultos) pueden estar limitados para los que forman esa clase. Sus niveles son, internos, protegidos, públicos, protegidos internos, y privados
El polimorfismo es la asignación de un valor que se da a una subclase, o que se había declarado ya en la clase principal.
La herencia es el concepto con el cual se aclara que una clase divide la estructura y comportamiento definidos en otra clase. Si la herencia es aplicada a una clase se le llama herencia única, pero si la herencia depende de diferentes clases, se le conoce como múltiple.
Se denomina manipuladores a las funciones que se utilizan junto con operadores de inserción (<<) y extracción (>>) en un objeto. Se pueden identificar como ejemplos: endl y setw.
Se define así al método que se utiliza para iniciar el estado de un objeto, y está incluido desde el momento que se crea el objeto. El constructor tiene unas reglas que son:
- El constructor tiene un nombre, que debe ser el mismo nombre de la clase.
- El constructor no puede tener ningún tipo de retorno.
El destructor es el método que se nombra de forma automática cuando el objeto está realizado de alcance o destruido. El destructor debe llevar el mismo nombre de la clase, pero lleva el símbolo de tilde está colocado antes del nombre.
La función en línea es la técnica usada por compiladores y que indica que introduzcas el cuerpo entero de la función, siempre que la función se use el código que es fuente del programa.
La función virtual es una función parte de una clase y su función puede ser eliminada en su clase derivada. Esta función se puede implementar usando una palabra clave que se denomina virtual, y se puede presentar durante la declaración de la función. Un ejemplo de función virtual, puede ser un token en C ++, el cual se puede lograr en lenguaje C, a través del uso de punteros de función (function pointers).
Esta función es el 'amigo' de una clase a la que se le deja entrar a datos públicos, protegidos o privados, en esa misma clase. Los amigos de clase se pueden verse afectados por la palabra clave de control de entrada como, público, privado o protegido.
La función de sobrecarga es una funcion normal, pero puede realizar varias tareas. Asimismo, permite crear varios métodos con un mismo nombre que solo los va a distinguir el tipo de entrada y salida que tiene la función.
Ejemplo:
void add(int& a, int& b); void add(double& a, double& b); void add(struct bob& a, struct bob& b);
Es una función donde se aplican varios operadores y que depende de los argumentos. Operator,-,* puede ser usado para pasar a traves de la funcion y tiene su propia prioridad para ejecutar.
Una clase abstracta es aquella clase que no puede ser instanciada. No se puede crear un objeto usando una clase abstracta pero puede ser heredado. Una clase abstracta solo puede contener el método abstracto. Por esta razón, Java permite solamente el método abstracto en la clase abstracta, sin embargo, para otros lenguajes sólo permite el método no abstracto.
El operador ternario es el que toma tres argumentos, también se llama un operador condicional y toma resultados y argumentos. Los argumentos y los resultados son de diferentes tipos de datos, y dependen de la función.
Este método ayuda a hacer operaciones de limpieza en recursos que no son utilizados en la actualidad. El método de finalización está protegido y solo se puede acceder por medio de esta clase o una derivada.
Hay dos tipos de argumentos.
- Llamada por valor (call by value): el valor que se haya pasado se modifica solo dentro de la función, y reitera el mismo valor que sea el cual se va a pasar a la función.
- Llamada por referencia (call by reference): el valor pasado cambia tanto dentro como fuera de la función y arroja el mismo valor o distinto.
La palabra clave super es la que se utiliza para llamar el método overridden, el cual anula uno de sus métodos de superclase. La palabra clave deja entrar a métodos sobrescritos y a miembros escondidos de la superclase. Asimismo, reenvía una llamada de un constructor a otro constructor.
Se conoce como método de anulación a una característica que deja que una subclase suministre la implementación de un método que anula en la clase principal. Se realiza la anulación de la implementación en la superclase al dar el mismo nombre de método, parámetro y tipo de retorno.
La interfaz es la colección que tiene el método abstracto. Cuando la clase implementa una herencia, de la misma manera hereda los métodos abstractos que tiene una interfaz.
La excepción es aquel evento que se suscita cuando se está ejecutando un programa. Las excepciones pueden ser de varios tipos: de tiempo, ejecución de error. Esas excepciones se llevan, por medio de un mecanismo de manejo de excepciones como son palabras clave try, catch y throw.
El token es reconocido por un compilador y no puede ser divido en elementos-componentes. Entre los tokens podemos ubicar: la palabras clave, los identificadores, los constantes, los literales de string y los operadores. Sin embargo, también son considerados tokens, las comas, paréntesis, llaves y corchetes.
Overloading es un enlace estático, y la overriding es un enlace dinámico. Overloading es el mismo método con distintos argumentos, y puede devolver o no, el mismo valor en la misma clase. En cambio, overriding es el mismo nombre del método, y con los mismos argumentos y tipos de devolución asociados a la clase y a su clase secundaria.
El objeto es una instancia de una clase. Los objetos tienen información múltiple, las clases no guardan ningún tipo de información. La definición de propiedades y funciones se realiza en clase y puede utilizarla el objeto. La clase posee subclases, pero el objeto no posee subobjetos.
La abstracción es una de la característica de OOPS que muestra solamente los detalles y que necesita el cliente de un objeto. Ejemplo: Al encender el televisor no se necesita ver todas sus funciones, lo que sea que se requiera para encender la TV se puede hacer usando una clase abstracta.
Los modificadores de acceso son aquellos que determinan el alcance que tiene el método o las variables a las cuales se entra a través de otros objetos o clases. Hay 5 tipos de modificadores de acceso:
- Private
- Protected
- Public
- Friend
- Protected Friend
Los modificadores sellados (sealed modifiers) son los modificadores de acceso a los cuales no se les permiten ser heredados por los métodos. Estos también se pueden aplicar a eventos, propiedades y métodos. Es un modificador que no se puede aplicar a miembros estáticos.
Se puede llamar "método estático"
El modificador 'new' le va a indicar al compilador que utilice la nueva implementación y no la función de clase base. En cambio, el modificador override permite anular la función de clase base.
Los constructores, son de tres tipos:
- El constructor por defecto / sin parámetros.
- El constructor paramétrico / con parámetros: Este constructor pasa argumentos en forma simultánea y puede crear una nueva instancia de una clase
- El constructor copy: este constructor puede crear un nuevo objeto como una copia de un objeto que ya existe.
La vinculación temprana es la asignación de valores a variables durante el tiempo de diseño, y la vinculación tardía es la asignación de valores a las variables en el tiempo de ejecución.
El puntero (pointer) 'this' define al objeto actual de una clase. Esta palabra clave es utilizada como puntero que va a distinguir entre el objeto actual y el objeto global. Es decir, está referido al objeto actual.
El acceso a la clase es privado, pero el acceso predeterminado de la estructura es público. La estructura se usa para reunir datos pero la clase puede ser utilizada para reunir datos y a su vez métodos. Las estructuras son exclusivas para datos, no requieren validación estricta. En cambio, las clases se utilizan para encapsular y heredar datos, por lo que requieren validación estricta.
Por defecto, es el privado (private).
Una función virtual pura es aquella función que puede ser anulada en la clase derivada, pero no puede ser definida. La función virtual es pura al utilizar el operador = 0.
Ejemplo:
Virtual void function1() // virtual no pura Virtual void function2() = 0 //virtual pura
Los operadores que no se pueden sobrecargar son
- Scope Resolution.
- Member Selection.
- Member selection a través de un puntero a una función.
El polimorfismo dinámico o en tiempo de ejecución, es el método de cancelación en el cual la llamada a una función anulada se resolverá durante el tiempo de ejecución.
No se requiere de ninguno.
Es un constructor especial, el cual se usa para crear un nuevo objeto como copia de un objeto que ya existe. Es decir, que habrá un solo constructor de copia que va a ser definido ya sea por el usuario o por el sistema.
El la manera como se puede anular el método.
No.
La clase base (base class) es la más generalizada, igualmente se dice que es una clase raíz.
La subclase (subclass) es la que hereda de una o más clases base.
La superclase (superclass) es la padre de la cual va a heredar otra clase.
La unión no es más que la asociación de un nombre con la clase. La vinculación estática es aquella en la que el nombre se puede asociar con la clase, mientras dure el tiempo de compilación. También recibe el nombre de vinculación temprana. La vinculación dinámica, es aquella en la cual el nombre se asocia con la clase mientras está el tiempo de ejecución. Se puede llamar también vinculación tardía.
Para una clase abstracta, no se puede crear ninguna clave.
La palabra clave operator se usa para sobrecargar (overloading)
El especificador de acceso privado (private access).
La herencia.
El de encapsulación (encapsulation).
exelente me gusto