P6. Introducción a la POO - Sistemas Informáticos Industriales (1774)

Anuncio
Escuela Politécnica Superior de Elche
Grado de Ing. Electrónica y Automática Industrial
Sistemas Informáticos Industriales
Curso 2015-16
Práctica 6: Introducción a la POO
Clase ClaseMatriz
1. Objetivos
Los objetivos de esta práctica son:
o Aprender las diferencias entre C++ y C
o Comprender los conceptos de clases y objetos en C++
o Aprender a utilizar y crear métodos, en concreto los métodos predefinidos
por el compilador: Constructor, constructor copia y destructor
o Entender el concepto de Sobrecarga de funciones
o Comprender el uso del puntero this
o Entender el concepto de Sobrecarga de operadores
Para ello, se realizará un programa en C++ con las siguientes especificaciones:
Se debe implementar la clase ClaseMatriz que permita manejar matrices de
cualquier dimensión.
o
Se utilizará gestión dinámica de memoria para el almacenamiento de los
datos de la matriz.
o
Los datos se almacenan en un array bidimensional de tipo double.
A modo de ejemplo se muestra el fichero ClaseMatriz.cpp con el constructor
por defecto (crea una matriz fxc y no asigna valores).
#define __CLASEMATRIZ_CPP__
#include <stdlib.h>
#include <iostream>
#include "ClaseMatriz.h"
using namespace std;
ClaseMatriz::ClaseMatriz(int f, int c){// Le pasamos 2 enteros e inicializa
filas=f;
// las variables del objeto con los
columnas=c;
// valores que le pasamos en la llamada
matriz = new double*[filas];
//Reserva dinámica de memoria para las filas
for(int i=0; i < filas; i++)
// y para las columnas
matriz[i]= new double[columnas];
}
Se deberá seguir la estructura típica de proyectos en C++:
Fichero ClaseMatriz.h
Fichero ClaseMatriz.cpp
Fichero MainMatriz.cpp
Definición de la clase ClaseMatriz (dado)
Métodos de la clase ClaseMatriz (a realizar)
Uso de la clase ClaseMatriz (dado)
1/3
Escuela Politécnica Superior de Elche
Grado de Ing. Electrónica y Automática Industrial
Sistemas Informáticos Industriales
Curso 2015-16
2. Tareas a realizar
Se deberán implementar en un archivo ClaseMatriz.cpp los métodos de la
clase ClaseMatriz, los cuales vienen predefinidos en ClaseMatriz.h. Dichos
métodos serán:
o
o
Implementar el constructor para dos parámetros recibidos, filas y columnas,
que se especifica en la clase ClaseMatriz (fichero ClaseMatriz.h). Éste
constructor deberá:
o
Realizar una copia de las variables del objeto original
o
Realizar una reserva dinámica de memoria para la matriz
Implementar el constructor copia, que se especifica en la clase ClaseMatriz
(fichero ClaseMatriz.h). Éste constructor deberá:
o
Inicializar las variables
o
Realizar una reserva dinámica de memoria para la matriz copia
o
Copiar todos los elementos de la matriz original en la matriz copia
o
Implementar el destructor de la clase. Deberá liberar toda la memoria
asignada.
o
Escribir el método Visualizar, que muestra por pantalla todos los datos de la
matriz.
o
Escribir el método IntroducirValores, que recoge por teclado todos los
elementos de la matriz.
o
Escribir el método MultPorEscalar, que multiplica por un escalar (solicitado
en dicho método) la matriz (previamente insertada en IntroducirValores) y
almacena el resultado en un objeto copia de la ClaseMatriz, el cual se
devolverá a MainMatriz.
o
Escribir el método Traspuesta, que realiza la traspuesta de la matriz que
insertamos en IntroducirValores y almacena el resultado en un objeto copia
de la ClaseMatriz, el cual devuelve al main.
o
Escribir el método Max, que devolverá un double que será el máximo de la
matriz que insertamos en IntroducirValores.
o
Escribir el método Min, que devolverá un double que será el mínimo de la
matriz que insertamos en IntroducirValores.
o
Escribir el método determinante, que devolverá un double con el valor del
determinante de la matriz que insertamos en IntroducirValores. Este método
sólo se realizará para matrices cuadradas de dimensiones 1, 2 o 3. Para
dimensiones mayores se indicará en un mensaje que el método no está
implementado.
2/3
Escuela Politécnica Superior de Elche
Grado de Ing. Electrónica y Automática Industrial
Sistemas Informáticos Industriales
Curso 2015-16
Se deberán implementar en un archivo ClaseMatriz.cpp los métodos de
sobrecarga de operadores de la clase ClaseMatriz, los cuales vienen
predefinidos en ClaseMatriz.h. Dichos métodos serán:
o
o
o
o
Implementar el método operator +, que se especifica en la clase
ClaseMatriz (fichero ClaseMatriz.h). Éste método deberá:
o
Declarar un nuevo objeto que será copia del objeto para el cual se
llama a método operator + (ayuda: usar puntero this)
o
Realizar una comprobación de que ambos sumandos tienen el
número de filas y de columnas entre ellos. En caso contrario,
mostrar un mensaje de error.
o
Realizar la suma entre las dos matrices y devolver la matriz
resultado
Implementar el método operator -, que se especifica en la clase ClaseMatriz
(fichero ClaseMatriz.h). Éste método deberá:
o
Declarar un nuevo objeto que será copia del objeto para el cual se
llama a método operator - (ayuda: usar puntero this)
o
Realizar una comprobación de que ambos matrices tienen el
número de filas y de columnas entre ellas. En caso contrario,
mostrar un mensaje de error.
o
Realizar la resta entre las dos matrices y devolver la matriz
resultado
Implementar el método operator *, que se especifica en la clase ClaseMatriz
(fichero ClaseMatriz.h). Éste método deberá:
o
Declarar un nuevo objeto que contenga el número de filas de la
matriz A y el número de columnas de la matriz B
o
Realizar una comprobación de que el número de filas de la matriz A
y el número de columnas de la matriz B es el mismo. En caso
contrario, mostrar un mensaje de error.
o
Realizar el producto entre las dos matrices y devolver la matriz
resultado
Implementar el método operator =, que se especifica en la clase
ClaseMatriz (fichero ClaseMatriz.h). Éste método deberá:
o
Realizar una comprobación de que ambos matrices tienen el
número de filas y de columnas entre ellas. En caso contrario,
mostrar un mensaje de error.
o
Realizar una igualación entre la matriz de la derecha de la
igualación y la matriz de la izquierda de la igualación, es decir:
Por ejemplo: matrizA[i][j]=matrizB[i][j]
o
Devolver un puntero al objeto actual (ayuda: puntero this)
3/3
Descargar