lenguaje c++ granados paredes gibrÁn lenguajes de programación dra. ana lilia laureano cruces

37
Lenguaje C++ Lenguaje C++ GRANADOS PAREDES GIBRÁN GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Upload: roberto-montalvo

Post on 28-Jan-2016

234 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++

GRANADOS PAREDES GRANADOS PAREDES GIBRÁNGIBRÁN

Lenguajes de Programación

Dra. Ana Lilia Laureano Cruces

Page 2: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++IntroducciónIntroducción

• B. Stroustrup, mediados de los 80, B. Stroustrup, mediados de los 80, AT&TAT&T

• Paso de la programación tradicional Paso de la programación tradicional (C) a estilos de abstracción de datos (C) a estilos de abstracción de datos y orientación a objetosy orientación a objetos

• Conserva características del C y Conserva características del C y añade nuevos conceptosañade nuevos conceptos

Page 3: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++ Extensiones respecto al C Extensiones respecto al C

• No orientadas a objetoNo orientadas a objeto

• Orientadas a objetosOrientadas a objetos

Page 4: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++ Extensiones respecto al C Extensiones respecto al C

• No orientadas a objeto No orientadas a objeto – Mejoras en entrada/salida - streamsMejoras en entrada/salida - streams– Sobrecarga de funciones y operadoresSobrecarga de funciones y operadores– Parámetros por defecto. ReferenciasParámetros por defecto. Referencias

Page 5: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++

• Organización de programas Organización de programas – Ficheros de declaraciones (.h)Ficheros de declaraciones (.h)

• Del sistemaDel sistema• Del usuario (#ifndef .... #define ..... #endif)Del usuario (#ifndef .... #define ..... #endif)

– Ficheros de código fuente (.cc, .cpp) Ficheros de código fuente (.cc, .cpp)

Page 6: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++

• Scope (alcance)Scope (alcance)– Fichero: declaraciones que no pertenecen Fichero: declaraciones que no pertenecen

a función o clase algunaa función o clase alguna– Función: etiquetasFunción: etiquetas– Local: cualquier nombre declarado en un Local: cualquier nombre declarado en un

bloque pertenece al bloque.bloque pertenece al bloque.– Clase: declaraciones asociadas a una claseClase: declaraciones asociadas a una clase

• Cada variable tiene un “scope” o un Cada variable tiene un “scope” o un contexto contexto

Page 7: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++

• Operadores y sentenciasOperadores y sentencias– SentenciasSentencias

• Misma sintaxis y semántica que las de CMisma sintaxis y semántica que las de C

– Operadores idem sentencias excepto: Operadores idem sentencias excepto: • new, delete, delete[], ::new, delete, delete[], ::• <<, >><<, >>• Sobrecarga Sobrecarga

Page 8: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Estructura básica de un Estructura básica de un

programaprograma#include<iostream.h>#include<iostream.h>

main()main()

{//inicio {//inicio

cout << “Hello world”;cout << “Hello world”;

}//fin}//fin

Page 9: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Elementos del programaElementos del programa

• COMENTARIOSCOMENTARIOS• // Comentario de una sola línea// Comentario de una sola línea• /* Comentario multilínea *//* Comentario multilínea */• BLOQUES DE CÓDIGOBLOQUES DE CÓDIGO• { Todos los bloques de código van entre { Todos los bloques de código van entre

corchetes }corchetes }• FIN DE LINEAFIN DE LINEA• Todas las instrucciones terminan con un Todas las instrucciones terminan con un

punto y comapunto y coma

Page 10: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Tipo básico de datosTipo básico de datos

• Tipo de dato Tipo de dato boolbool tiene dos tiene dos valores asociados true o falsevalores asociados true o false

• DECLARACIÓN DE UNA DECLARACIÓN DE UNA VARIABLEVARIABLE

• <Tipo de dato> <Tipo de dato> Nombre_variable;Nombre_variable;

• INICIALIZACION DE UNA INICIALIZACION DE UNA VARIABLEVARIABLE

• <Tipo de dato> <Tipo de dato> Nombre_variable = [valor];Nombre_variable = [valor];

• EJEMPLO:EJEMPLO:• int variable1;int variable1;• bool variable2=true;bool variable2=true;

Page 11: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++ Tipo básico de datos Tipo básico de datos

• Variables y aritmética.Variables y aritmética.• Todo nombre y/o expresión tiene un tipo.Todo nombre y/o expresión tiene un tipo.• El tipo determina las operaciones que se El tipo determina las operaciones que se

pueden realizar con el.pueden realizar con el.• Conversiones implícitas.Conversiones implícitas.• En asignaciones y operaciones En asignaciones y operaciones

algebraicas el lenguaje lleva a cabo algebraicas el lenguaje lleva a cabo todas las conversiones implícitas que todas las conversiones implícitas que faciliten el uso y sean seguras.faciliten el uso y sean seguras.

Page 12: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++ArreglosArreglos

• Un arreglo es un conjunto de tipos de datos básicosUn arreglo es un conjunto de tipos de datos básicos

• DECLARACIÓN DE UN ARREGLODECLARACIÓN DE UN ARREGLO• <Tipo de dato básico> Nombre_variable[Número de <Tipo de dato básico> Nombre_variable[Número de

elementos];elementos];

• INICIALIZACION DE UN ARREGLOINICIALIZACION DE UN ARREGLO• <Tipo de dato> Nombre_variable = {valor1, valor2, …, <Tipo de dato> Nombre_variable = {valor1, valor2, …,

valorN}];valorN}];

• EJEMPLO:EJEMPLO:• char arreglo1[10];char arreglo1[10];• float arreglo2={1.5, 2.3, 6,7};float arreglo2={1.5, 2.3, 6,7};

Page 13: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++ Arreglos Arreglos

MultidimencionalesMultidimencionales• DECLARACIÓN DE UN ARREGLO DECLARACIÓN DE UN ARREGLO

MULTIDIMENCIONALMULTIDIMENCIONAL• <Tipo de dato básico> Nombre_variable[Número <Tipo de dato básico> Nombre_variable[Número

de elementos][Numero de elementos];de elementos][Numero de elementos];

• INICIALIZACION DE UN ARREGLO INICIALIZACION DE UN ARREGLO MULTIDIMENCIONALMULTIDIMENCIONAL

• <Tipo de dato> Nombre_variable = { {valor1, <Tipo de dato> Nombre_variable = { {valor1, valor2, …, valorN}, {valor1, valor2, …, valorN} };valor2, …, valorN}, {valor1, valor2, …, valorN} };

• EJEMPLO:EJEMPLO:• char arreglo1[10][10];char arreglo1[10][10];• int arreglo2[]={{1,2,3},{4,5,6}{7,8,9}};int arreglo2[]={{1,2,3},{4,5,6}{7,8,9}};

Page 14: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Apuntadores y vectoresApuntadores y vectores

• Punteros y vectores.Punteros y vectores.char v[10]; //vector de 10 caracteres (0 a 9)char v[10]; //vector de 10 caracteres (0 a 9)char *p; // puntero a un carácterchar *p; // puntero a un carácterp = &v[3]; //p apunta al cuarto elemento de vp = &v[3]; //p apunta al cuarto elemento de v

• punteros - operaciones asociadaspunteros - operaciones asociadas– int *p; //puntero a enteroint *p; //puntero a entero– int **p; //puntero a puntero a enteroint **p; //puntero a puntero a entero– int (*vp) [10]; //puntero a vector de 10 enterosint (*vp) [10]; //puntero a vector de 10 enteros– int (*fp) ( char, char *);// puntero a funciónint (*fp) ( char, char *);// puntero a función

Page 15: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Tipos definidos por el Tipos definidos por el

usuariousuario• ESTRUCTURAS (Registros)ESTRUCTURAS (Registros)struct date_s {struct date_s { int day, month, year;int day, month, year; } aDate;} aDate;

La definición de arriba de aDate es también la La definición de arriba de aDate es también la declaración de una estructura llamada date_s. declaración de una estructura llamada date_s. Podemos definir otras variables de este tipo Podemos definir otras variables de este tipo referenciando la estructura por el nombre: referenciando la estructura por el nombre:

struct date_s anotherDate;struct date_s anotherDate;• EnumeracionesEnumeraciones• ClasesClases

Page 16: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Instrucciones de control de flujoInstrucciones de control de flujo

• EJEMPLOEJEMPLO• for(int i=0; i<5; i+for(int i=0; i<5; i+

+){+){ cout << “Hello cout << “Hello

world”<<i;world”<<i;

• }}

Page 17: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++OperadoresOperadores

Los operadores de Los operadores de incremento ++ y -- incremento ++ y -- pueden ser explicados pueden ser explicados por medio del por medio del siguiente ejemplo. Si siguiente ejemplo. Si tienes la siguiente tienes la siguiente secuencia de secuencia de instrucciones instrucciones

a = a + 1; b = a; a = a + 1; b = a;

Se puede puedes usarSe puede puedes usar

b = a++; b = a++;

b = ++a; b = ++a;

Page 18: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Sobrecarga de operadoresSobrecarga de operadores

+ - * / % ^ & | ~ ! = < > += -= *= /= + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &=%= ^= &=

|= << >> >>= <<= == != <= >= |= << >> >>= <<= == != <= >= && || ++ -- && || ++ --

->* -> , [ ] ( ) new new[ ] delete delete[ ] ->* -> , [ ] ( ) new new[ ] delete delete[ ]

No se sobrecargan: No se sobrecargan: ::::...*.*

Page 19: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Sobrecarga de operadoresSobrecarga de operadores

class complex {class complex {double re, im;double re, im;

public:public:complex(double r, double i) : re(r), im(i){}complex(double r, double i) : re(r), im(i){}complex operator+(complex);complex operator+(complex);complex operator*(complex);complex operator*(complex);

bool operator==(complex);bool operator==(complex); bool operator<(complex);bool operator<(complex);};};void f()void f(){{ complex a(1, 3.1);complex a(1, 3.1);

complex b(1.2, 2);complex b(1.2, 2);complex c = b;complex c = b;if(a==b)if(a==b) a = b + c;a = b + c;b = b + c * a;b = b + c * a;c = a * b + complex(1,2);c = a * b + complex(1,2);

}}

Page 20: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++FuncionesFunciones

• Regulares (similares a una función C).Regulares (similares a una función C).• Miembros (asociadas a una clase).Miembros (asociadas a una clase).

• Nombre, lista de argumentos, tipo de retorno y Nombre, lista de argumentos, tipo de retorno y cuerpo.cuerpo.

• int miFuncion(int a); //firma o declaraciónint miFuncion(int a); //firma o declaración• int miFuncion(int a){ //definiciónint miFuncion(int a){ //definición

cout<<a;cout<<a;

• }}

Page 21: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++FuncionesFunciones

extern int pow( float, int);extern int pow( float, int);

int main()int main()

{{

for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)

cout << pow( 2, 5) << endl;cout << pow( 2, 5) << endl;

}}

Page 22: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++FuncionesFunciones

• Paso de argumentosPaso de argumentos– Por valor - seguridadPor valor - seguridad

• copiado en el almacenamiento local de la funcióncopiado en el almacenamiento local de la función• la función accede a la copiala función accede a la copia

– Por referencia - velocidad - retornos múltiplesPor referencia - velocidad - retornos múltiples• se copia la dirección del objeto que se esta pasandose copia la dirección del objeto que se esta pasando• la función accede al objetola función accede al objeto

– Por referencia constante - seguridad + Por referencia constante - seguridad + velocidadvelocidad

• Vectores: paso por referenciaVectores: paso por referencia

Page 23: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++FuncionesFunciones

• Paso de argumentosPaso de argumentos– Por valor Por valor char a = ‘a’;char a = ‘a’;miFuncion(a);miFuncion(a);– Por referenciaPor referenciachar a = ‘a’;char a = ‘a’;miFuncion(&a);miFuncion(&a);

• Vectores: paso por referenciaVectores: paso por referenciachar a[] = {‘a’,’b’}char a[] = {‘a’,’b’}miFuncion(a);miFuncion(a);

Page 24: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++FuncionesFunciones

• Sobrecarga de nombres.Sobrecarga de nombres.– int max(int, int);int max(int, int);– int max( int, int, int);int max( int, int, int);– int max(int *, int);int max(int *, int);– int max(float, int);int max(float, int);– int max(int, float);int max(int, float);

Page 25: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Soporte para abstracción Soporte para abstracción

de datosde datos• Definición de un conjunto de Definición de un conjunto de

operaciones asociadas a un tipo.operaciones asociadas a un tipo.• Restricción del conjunto de operaciones Restricción del conjunto de operaciones

que se pueden realizar sobre un tipo a que se pueden realizar sobre un tipo a las definidas para el mismo.las definidas para el mismo.

• CLASECLASE– nombrenombre– datos miembrosdatos miembros– funciones miembrofunciones miembro– control de acceso control de acceso

Page 26: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Soporte para abstracción de Soporte para abstracción de

datosdatos• Inicialización y destrucción.Inicialización y destrucción.• Inicialización y asignación.Inicialización y asignación.• Patrones.Patrones.• Conversiones de tipo Conversiones de tipo

complex a = complex(1);complex a = complex(1);

• Múltiples implementaciones Múltiples implementaciones

Page 27: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++Soporte para orientacion a Soporte para orientacion a

objetosobjetos• Funciones virtuales. Polimorfismo.Funciones virtuales. Polimorfismo.• Clases abstractas.Clases abstractas.• Clases patrón.Clases patrón.• Herencia simple y múltiple.Herencia simple y múltiple.• Encapsulado. Encapsulado.

Page 28: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++

• Los objetos se crean al llegar a su Los objetos se crean al llegar a su definición.definición.

• Los objetos se destruyen cuando salen Los objetos se destruyen cuando salen del bloque.del bloque.

• Los objetos globales se crean una sola Los objetos globales se crean una sola vez y se destruyen al terminar el vez y se destruyen al terminar el programa.programa.

• Los objetos static son similares a los Los objetos static son similares a los globales.globales.

Page 29: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++

• Almacenamiento de objetosAlmacenamiento de objetos

– estático (asignada al iniciarse el estático (asignada al iniciarse el programa)programa)

– automático (asociada al bloque)automático (asociada al bloque)

– en la memoria disponible (obtenida con en la memoria disponible (obtenida con new)new)

Page 30: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++ Clases. Clases.

Tipo abstracto de datos definido por Tipo abstracto de datos definido por el usuarioel usuario

Interface e implementaciónInterface e implementaciónclass X {class X {private:private:

int i;int i;

public:public:

f();f();

protected:protected:

g();g();

};};

struct X {struct X {private:private:

int i;int i;

public:public:

f();f();

protected:protected:

g();g();

};};

Page 31: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++clasesclases

• ConstructoresConstructores– Funciones con el mismo nombre de la Funciones con el mismo nombre de la

clase pero que no retornan nada. clase pero que no retornan nada. – Constructor de copiaConstructor de copia– Constructor por defectoConstructor por defecto– Constructores como conversores de tipoConstructores como conversores de tipo

• Destructores Destructores – virtualesvirtuales

Page 32: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++clasesclases

• CONSTRUCTORESCONSTRUCTORES• class Point { class Point {

– int _x, _y; int _x, _y; – public: Point() { _x = _y = 0; } public: Point() { _x = _y = 0; } – void setX(const int val);void setX(const int val);– void setY(const int val); void setY(const int val); – int getX() { return _x; } int getX() { return _x; } – int getY() { return _y; } int getY() { return _y; }

• }; };

Page 33: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++clasesclases

• DESTRUCTORESDESTRUCTORES• class Point { class Point {

– int _x, _y; int _x, _y; – public: public: – Point() { _x = _y = 0; } Point() { _x = _y = 0; } – Point(const int x, const int y) { _x = x; _y = y; } Point(const int x, const int y) { _x = x; _y = y; } – ~Point() { /* ¡Nada qué hacer! */ } ~Point() { /* ¡Nada qué hacer! */ } – void setX(const int val);void setX(const int val);– void setY(const int val); void setY(const int val); – int getX() { return _x; } int getX() { return _x; } – int getY() { return _y; } int getY() { return _y; }

• }; };

Page 34: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++clasesclases

• FriendFriend• Nosotros podemos definir que funciones o clases sean amigos de una Nosotros podemos definir que funciones o clases sean amigos de una

clase para permitirles acceso directo a sus miembros de datos privados. clase para permitirles acceso directo a sus miembros de datos privados. Por ejemplo, que la función para el operador + tuviese acceso a los Por ejemplo, que la función para el operador + tuviese acceso a los miembros de datos privados miembros de datos privados _real_real e e _imag_imag de la clase de la clase ComplexComplex. Con ese . Con ese fin declaramos que el operador + sea amigo de la clase fin declaramos que el operador + sea amigo de la clase ComplexComplex: :

• class Complex {class Complex {• ... public: ... ... public: ... • friend Complex operator +( const Complex &, const Complex friend Complex operator +( const Complex &, const Complex

& ); & ); • };};

• Complex operator +(const Complex &op1, const Complex &op2) Complex operator +(const Complex &op1, const Complex &op2) { {

• double real = op1._real + op2._real, imag = op1._imag + double real = op1._real + op2._real, imag = op1._imag + op2._imag; return(Complex(real, imag));op2._imag; return(Complex(real, imag));

• } }

Page 35: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++clasesclases

• Construcción de objetosConstrucción de objetos– automáticos automáticos

• variables locales: se ejecuta su constructor cada vez variables locales: se ejecuta su constructor cada vez que el programa pasa por la declaraciónque el programa pasa por la declaración

– secuencia de construcción - destrucciónsecuencia de construcción - destrucción

• inicialización y asignacióninicialización y asignación

– en memoria disponibleen memoria disponible• new, deletenew, delete

– int* ip = new int(7);int* ip = new int(7);– delete ip;delete ip;– int* iap = new int[10]; int* iap = new int[10]; – delete [] iap;delete [] iap;

Page 36: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++clases y herenciaclases y herencia

• class Point3D : public Point {class Point3D : public Point {• int _z; int _z; • public:public:

– Point3D() { setX(0); setY(0); _z = 0; } Point3D() { setX(0); setY(0); _z = 0; } – Point3D(const int x, const int y, const int z) Point3D(const int x, const int y, const int z)

{ setX(x); setY(y); _z = z; } { setX(x); setY(y); _z = z; } – ~Point3D() { /* Nada que hacer */ } ~Point3D() { /* Nada que hacer */ } – int getZ() { return _z; }int getZ() { return _z; }– void setZ(const int val) { _z = val; }void setZ(const int val) { _z = val; }

• }; };

Page 37: Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

Lenguaje C++Lenguaje C++clases y herencia múltipleclases y herencia múltiple

• class DrawableString : public class DrawableString : public Point, public DrawableObject {Point, public DrawableObject {

• ... public: ... public: – DrawableString(...){ ... } DrawableString(...){ ... } – ~DrawableString() { ... } ... ~DrawableString() { ... } ...

• }; };