Miembros Especiales de la Clase en C++ (Práctica 2)
Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Ejercicios prácticos
- Primer ejercicio práctico:
Implemente una clase "Complejo" que debe tener dos miembros privados de tipo double llamados real_part e img_part. Además cuenta con métodos que implementan las siguientes operaciones matemáticas entre números complejos: suma, resta, multiplicación, división, conjugado y magnitud (módulo). Dichas operaciones se deben implementar de forma que se puedan utilizar a través de operadores de C++, a excepción de la magnitud (módulo) que se debe implementar como una función de conversión. Enlace útil 1, Enlace útil 2, Enlace útil 3 NOTA: Para el conjugado puede sobrecargar cualquier otro operador que desee, por ejemplo: %, ~, &&, |, etc. (Preferiblemente un operador unario).
Para esta clase implemente constructores por defecto, parametrizado y de copia.
Implemente también un destructor que al ejecutarse imprima este mensaje: "¡Complejo destruido!"
Implemente un sencillo menú de usuario que permita introducir 2 números complejos y aplicar las operaciones sobre ellos.
La función cout de C++ no sabe imprimir en pantalla objetos de la clase Complejo. Para lograr que la función
cout
imprima los números complejos en el formatoa+bi
, con la línea de codigocout<<objetoComplejo<<endl;
, es necesario implementar una sobrecarga del operador<<
. Dicha sobrecarga tiene como tipo de valor de retorno una referencia a un objeto std::ostream y recibe como parámetros de entrada una referencia a un objetostd::ostream
y una referencia constante a un objeto de la clase Complejo. La funcionalidad se implementa pasandole al objeto de tipo ostream que se recibio a la entrada cada uno de los componentes del formato del número complejo (primero la parte real, luego el signo más o el menos, luego la parte imaginaria y por último la letra i), para esto se debe utilizar el operador<<
para pasar individualmente cada componente al objeto ostream. Enlace útil 4, Enlace útil 5 Tips: Implemente la sobrecarga del operador<<
como una función amiga de la clase Complejo. Otras funciones útiles para este ejercicio: valor absoluto (abs), potenciación (pow) y raíz cuadrada (sqrt), estas funciones pertenecen a la libreríacmath
. - Segundo ejercicio práctico
Desarrolle una aplicación sencilla para construir figuras geométricas, utilizando las siguientes clases:
- Implemente una clase llamada "Vertice" que tiene dos variables tipo double para almacenar las coordenadas (x, y) del punto en el plano cartesiano donde se ubicará un vértice. Esta clase cuenta con los siguientes métodos: Un constructor parametrizado, un constructor de copia y un método const para averiguar el valor de las coordenadas.
- Implemente las siguientes clases: "Circulo", "Triangulo", "Rectangulo", "Pentagono" y "Hexagono". Cada una de estas clases tiene variables para almacenar las coordenadas de sus vértices (¡estas variables son objetos de la clase "Vertice" por supuesto!), un constructor parametrizado privado para inicializar los vértices, y el constructor de copia por defecto debe estar deshabilitado. Estas clases deben tener métodos para calcular el perímetro y el área de la figura en cuestión.
- Implemente una clase "ConstructorFigura" que cuenta con un método (Puede nombrar este método como "Builder") static sobrecargado que recibe como parámetros de entrada los vértices (objetos tipo vértice) para construir una figura y como tipo de retorno la clase de la figura que se va a construir. Por ejemplo, la sobrecarga de este método que recibe 3 vértices debería tener como tipo de retorno la clase "Triangulo". Estos métodos deben verificar que dos vertices no sean iguales o que un mismo vertice no sea común a 3 lados al mismo tiempo (en las figuras donde aplique). Esta clase también debe tener una variable static que lleva la cuenta de cuántas figuras se van creando en la ejecución de la aplicación. NOTA: La sobrecarga que recibe un solo vértice corresponde a la creación de un objeto de la clase "Circulo", cuyo radio es la distancia entre las coordenadas indicadas por el vértice y las coordenadas del punto (0,0).
Para implementar los métodos sobrecargados debe utilizar los constructores privados de las clases de las figuras geométricas, simplemente haciendo un retorno de un objeto del tipo de la figura en cuestión. Averigüe como hacerlo en el siguiente enlace: Enlace útil 5. Recuerde también que para acceder a miembros privados de una clase a través de otra debe existir una "amistad" entre ambas clases ;-)
Desarrolle una pequeña aplicación en la que se puedan crear distintas figuras geométricas y averiguar su perímetro y su área.