La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.

Presentaciones similares


Presentación del tema: "Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos."— Transcripción de la presentación:

1 Prof. Manuel B. Sánchez

2 Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos o como atributos de otras clases, siguiendo las reglas de sintaxis de C++ para cada caso. Ejemplo: Deporte preferido; Articulo zapato; Vehiculo tucson; Estudiante rafael, aux; objetos Para declarar un objeto se escribe primero el nombre de la casa y luego el nombre (identificador) del objeto. Cuando se declara un objeto en C++, el sistema reserva memoria de manera automática para el objeto. Si se desea declarar un objeto de una clase que se encuentra en otro archivo, es necesario incluir el archivo de forma explicita, por medio del nombre. Ejemplos: #include “persona.h” #include “carro.h” Si se desea declarar un objeto de una clase que se encuentra en otro archivo, es necesario incluir el archivo de forma explicita, por medio del nombre. Ejemplos: #include “persona.h” #include “carro.h”

3 Para crear una instancia de una Clase de forma dinámica se debe hacer solicitud de memoria usando la palabra reservada new y un puntero de la Clase en cuestión, la sintaxis es la siguiente: NombreClase *punteroObjeto; punteroObjeto = new NombreClase( ); Ejemplo: Estudiante *rafael = new Estudiante(); Vehiculo *tucson = new Vehiculo(“Fiat”, “Palio”, 2005, “Rojo”); Instanciación (Creación) de un Objeto de forma dinámica Puntero de la Clase a instanciar Operador para solicitar memoria Constructor de la Clase a la cual pertenece el objeto Lista de argumentos del Constructor, en caso que no sea un Constructor por defecto Se crea un objeto cuyos valores de sus atributos están bien definidos y dados por el usuario de la Clase C++ no tiene recolector de basura, por tal motivo aquellos objetos que han sido creados usando el operador new, deben ser liberados explícitamente por medio del operador delete en el momento que ya no sean necesarios. Ejemplo: delete punteroObjeto; C++ no tiene recolector de basura, por tal motivo aquellos objetos que han sido creados usando el operador new, deben ser liberados explícitamente por medio del operador delete en el momento que ya no sean necesarios. Ejemplo: delete punteroObjeto; Se crea un objeto estudiante con un estado dado por los valores por defecto que disponga el Programador de la Clase

4 Uso de objetos Una vez que el objeto fue creado es necesario establecer comunicación con el mismo para poder hacer uso de sus características; de esta manera se podrá cambiar el estado del objeto y/o realizar alguna acción. Los objetos proporcionan dos formas de hacer esto: 1.Manipulando los atributos (no recomendable desde otras clases). 2.Invocando sus métodos.

5 Manipulando Atributos Para acceder a las variables o atributos que tienen los objetos que fueron creados, se utiliza el “.”, que nos da acceso a la copia de atributos que tienen los objetos. nombreObjeto.nombreAtributo Por ejemplo: int num1,num2; Rectangulo r1(10, 20, 50, 30); num1 = r1.x; num2 = r1.ancho; class Rectangulo{ int x, y, ancho, alto; public: Rectangulo(){x=y=ancho=alto=0;} Rectangulo(int px, int py, int a, int b){ x=px; y=py; ancho=a; alto=b; } int area(){ return ancho*alto;} void desplazar(int dx, int dy){ x+=dx; y+=dy; } }; class Rectangulo{ int x, y, ancho, alto; public: Rectangulo(){x=y=ancho=alto=0;} Rectangulo(int px, int py, int a, int b){ x=px; y=py; ancho=a; alto=b; } int area(){ return ancho*alto;} void desplazar(int dx, int dy){ x+=dx; y+=dy; } }; Estas operaciones solo son posibles si la clase desde la cual se realizan tiene permisos para acceder a los atributos del rectángulo (depende de los modificadores de acceso usados en la clase rectángulo) Se crea un nuevo rectángulo cuyos atributos de posición (x, y) y dimensiones (ancho, alto) tendrán los valores 10, 20, 50 y 30 respectivamente.

6 Invocando métodos Como se ha dicho en varias oportunidades los objetos se comunican por medio de mensajes; enviar un mensaje a otro objeto no es más que llamar a un método de otro objeto. Para llamar un método de un objeto, se utiliza el operador “.” nombreObjeto.nombreMetodo( ); Por ejemplo: int area; Rectangulo r1(10, 20, 30, 40 ); area = r1.area(); r1.desplazar(2,3); La variable area tendrá el valor 1200. El objeto r1, ahora estará el la posición x=12, y=23 Para hacer uso de atributos o métodos por medio de un puntero a la clase se utiliza el operador “->” en vez del operador “.” Objeto receptor del mensaje Mensaje enviado al objeto

7 El puntero this Los métodos de objeto (no static) reciben de forma implícita un puntero al objeto receptor del mensaje y sobre el cual debe operar el método. Podemos hacer uso de este puntero por medio de la palabra reservada “this”. Dentro de los métodos de la clase, en el código, se puede utilizar this para acceder a los atributos del objeto receptor o hacer que el objeto receptor se pase mensajes a sí mismo.

8 class Punto{ int x, y; int x, y;public: Punto(): Punto(0,0) {} Punto(): Punto(0,0) {} Punto(int a, int b){ Punto(int a, int b){ this->x=0; this->y=0; this->desplazar(a, b); } void desplazar(int dx, int dy){ void desplazar(int dx, int dy){ x +=dx; y+=dy; }}; Ejemplo referencia this #include “punto.h” void main(){ Punto a, b(4,5); a.desplazar(8,8);} “a” representa al this “b” representa al this Ahora “a” pasa a ser el this por ser el receptor del mensaje Desde un constructor se puede llamar a otro siguiendo está sintaxis

9 ¿Cómo declarar un vector de objetos? La declaración de un vector de objetos se realiza de forma similar a como se declaran los vectores de tipos de dat0s primitivos. Ejemplo: Punto contorno[15] Rectangulo potreros[12];

10 ¿Cómo se usa el vector de objetos? Cada objeto del vector se accede por medio de un indice, al igual que se hace con los tipo de datos primitivos. Ejemplo: terrenos[3].desplazar(9, 5); for(i=0; i<15;i++) contorno[i].desplazar(rand(),rand());

11 Métodos Getter y Setter Existen ocasiones en que es necesario que objetos de otras clases puedan modificar o conocer el valor de los atributos de un objeto para un fin específico. Las propiedades de un objeto pueden examinarse y modificarse mediante métodos o funciones miembro definidas por el creador de la clase y pueden ser de dos tipos: Método getter: es un método que leer el valor de la propiedad, y por lo general los nombres de estos métodos llevan el prefijo “get” seguido del nombre del atributo a examinarse. Método Setter: es un método usado para cambiar el valor de la propiedad. Su nombre lleva el prefijo set seguido del nombre del atributo a cambiar.

12 Ejemplo Getter y Setter class Punto{ int x, y; public: Punto(){ x= y= 0;} int getX(){ return X; } int getY(){ return Y; } void setX(int x){ this->x = x; } void setY(int y){ this->y = y; } } Los métodos getter retornan el valor del atributo Los métodos setter reciben el nuevo valor del atributo como parámetro y lo asignan al atributo

13 Realizar un Ejemplo para aclarar los conceptos vistos en clase


Descargar ppt "Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos."

Presentaciones similares


Anuncios Google