class triangulo { float b,h; public: rectangulo(float x1, float x2) { b = x1; h = x2; } float...

47
class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main() { Triangulo obj(3,5); cout << “El area es: ” << obj.calcularArea()); } Programación I Programación Orientada a Objetos en C++

Upload: maria-victoria-lozano-caballero

Post on 23-Jan-2016

274 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

class Triangulo { float b,h;public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } };

void main() { Triangulo obj(3,5); cout << “El area es: ” << obj.calcularArea());}

Pro

gra

mació

n I

Programación Orientada a Objetos en C++

Page 2: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Fundamentos de C++P

rog

ram

ació

n I

Nombres asignados a variables, métodos y clases para ser

identificadas y de forma única y con sentido para el

programador.

Identificadores:

El primer carácter debe ser letra ó subrayado.

Es un lenguaje sensible a mayúsculas y minúsculas.

Acepta letras, “_” y cifras del 0 al 9.

No se aceptan palabras claves (reservada por C++ para un objetivo determinado)

Page 3: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Fundamentos de C++P

rog

ram

ació

n I

Tipos de Datos:

Categoría Tipo Tamaño

Enteros short ?int ?

long ?En coma flotante

float ?double ?

Caracteres char ?String ?

Lógicos bool ?

Page 4: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Fundamentos de C++P

rog

ram

ació

n I Declaración de Variables:

Asocia un tipo de dato especificado a un grupo de

variables. Se pueden declarar en cualquier parte de un

bloque de programa ( entre {} ) ó fuera.

Sintaxis:

Tipo_Dato variable1, variable2, . . . ;

Ejemplo:

String nombre;

float angulo=90.5;

double velocidad;

char sexo;

Page 5: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Fundamentos de C++P

rog

ram

ació

n I Definición de Constantes:

Sintaxis:

const Tipo_Dato nombreConstante = valor ;

Ejemplo:

const int MAX=100;

const char letra=‘A’;

const double v=3.5;

Page 6: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Fundamentos de C++P

rog

ram

ació

n I

El archivo de cabecera iostream.h permite a los programas C++ realizar entrada/salida a consola, esto es, entrada por teclado y salida por pantalla.

Salida:

El flujo utiliza el operador <<, para visualizar la salida al objeto de salida estándar. El flujo de salida cout permite salidas de múltiples valores.

cout<<“Introduzca el numero total de personas:”;

cout<<“Numero total de personas: ”<<num<< “\n”;

cout <<nombre<<“ tiene ”<<edad<<“ años ”<<endl;

Entradas y Salidas BásicasEntradas y Salidas Básicas

Page 7: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Fundamentos de C++P

rog

ram

ació

n I Entrada:

C++ ofrece el objeto cin y el operador >>.

int edad;

double longitud, peso;

String nombre;

char carácter;

cin>>edad;

cin>>longitud>>peso; //para saltar usa espacio en blanco ó Enter

Para introducir una cadena de caracteres:

cin.getline(nombre,100); //Lee una cadena de máximo 100 caracteres y la guarda en nombre.

Para leer un carácter

cin.get(caracter);

Entradas y Salidas BásicasEntradas y Salidas Básicas

Page 8: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Fundamentos de C++P

rog

ram

ació

n I

Entrada:

Para restaurar el estado del flujo de entrada se usan las funciones:

Entradas y Salidas BásicasEntradas y Salidas Básicas

cin.clear();

Restaura el flujo del estado y lo pone en true, que significa todo bien.

cin.ignore();

Reinicia los indicadores de estado

Page 9: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Fundamentos de C++P

rog

ram

ació

n I

Manipuladores de iostream:endlendsflushwsdecocthexsetw(arg)setprecision(arg)setbase(int b)setfill(char car)leftright

Entradas y Salidas BásicasEntradas y Salidas Básicas

fixedshowbasenoshowbaseshowposnoshowposshowpointnoshowpointskipsnoskips

Page 10: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Pro

gra

mació

n I

En C++ las variables pueden ser declaradas en cualquier lugar de un bloque. Esto permite acercar la declaración de las variables al lugar en que se utilizan por primera vez.

Las variables auto declaradas de esta forma existen desde el momento en que se declaran, hasta que se llega al fin del bloque correspondiente.

En C++ la variable que sirve de contador al bucle puede declararse e inicializarse en la propia sentencia for.

Declaraciones en C++Declaraciones en C++

Fundamentos de C++

Page 11: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Pro

gra

mació

n I Declaraciones en C++Declaraciones en C++

Fundamentos de C++

Por ejemplo:

for (double suma=0.0, int i=0; i<n; i++)

suma += a[i];

Las variables suma e i son declaradas y creadas como double e int en el momento de iniciarse la ejecución del bucle for.

Page 12: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Introducir Clases en C++P

rog

ram

ació

n I Estructuras que contienen declaraciones de datos y

declaraciones de funciones.

Las funciones se denominan funciones miembro, e indican lo que puede hacer la clase.

Las variables definidas dentro de la clase se denominan variables miembro o atributos de la clase.

Las variables instanciadas a partir de clases son los objetos.

Page 13: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Introducir Clases en C++P

rog

ram

ació

n I Formato: class nombre_de_la_clase{

private:

Lista de atributos y/o metodos

public:

Lista de atributos y/o metodos;

};

Donde nombre_de_la_clase corresponde al nombre que identifica a la clase, y Lista_de_miembros, corresponde a los datos y funciones miembros.

La definición de una clase no reserva espacio en memoria. Este almacenamiento se realiza cuando el programa está en ejecución, cuando se instancia una clase o se crea un objeto.

Page 14: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Pro

gra

mació

n I

Los especificadores de acceso public, protected y private, son los que definen el acceso a los datos y a las funciones miembros.

Introducir Clases en C++

Ejemplo de declaración de una clase:

class Punto{ private: int X; int Y;

public:

int RetornarX();

void FijarX(int);

};

Page 15: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Objeto de una ClaseP

rog

ram

ació

n I El objeto es la instancia de una clase.

Formato: Nombre_de_la_clase nombre_objeto;

Con el objeto de la clase punto:

Punto p;

El acceso a cada miembro individual de la clase se realiza utilizando el operador punto (.) Por ejemplo:

Punto p;

p.FijarX(250);

cout <<“Coordenada X de p es:”<<p.RetornarX();

Page 16: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Objeto de una ClaseP

rog

ram

ació

n I

Se puede asignar un objeto de una clase a otro objeto.

C++ realiza una copia bit a bit de todos los miembros del dato. Todos los datos contenidos físicamente en el área de datos del objeto fuente se copian en el objeto receptor. Ejemplo:

Punto p1;

Punto p2;

p2 = p1;

Page 17: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Implementación de ClasesP

rog

ram

ació

n I

Generalmente, la implementación de una clase se realiza en un archivo independiente, de extensión .cpp ó .h lo que ayuda a la reutilización del código.

Posteriormente se pueden incluir como archivos de cabecera en un prograna usando la directiva de compilador #include.

Page 18: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Control de Acceso a los Métodos

Cuando se crea una nueva clase en C++, se puede especificar el nivel de acceso que se quiere para las variables de instancia y los métodos definidos en la clase por medio de los siguientes modificadores de acceso:

publicpublicCualquier clase puede acceder a las propiedades y métodos públicos.

protectedprotectedSólo las clases derivadas y aquellas situadas o no en el mismo paquete, pueden acceder a las propiedades y métodos protegidos.

Pro

gra

mació

n I

Page 19: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Control de Acceso a los Métodos

privateprivateLas variables y métodos privados sólo pueden ser accedidos desde dentro de la clase.

Si en la definición de la clase se obvia el modificador de acceso, la clase lo asume como privado (private).

Pro

gra

mació

n I

Page 20: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Funciones Miembro o MétodosP

rog

ram

ació

n I Son las que se incluyen dentro de la clase y

determinan el comportamiento del objeto.

Se definen de manera similar a cualquier otra función pero requiere incluir el operador de resolución de ámbito :: en la definición de la función.

Formato:

tipo_devuelto nombre_clase::nombre_funcion (lista_parametros){

Lista_de_instrucciones;

}

Page 21: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Definición de Funciones Miembro o Métodos

Pro

gra

mació

n I Funciones en Línea y Fuera de Línea:

Cuando las funciones miembro se definen dentro de la definición de la clase, se denominan funciones en línea.

Cuando se tienen funciones de código muy grandes, es mejor codificar sólo el prototipo de la función dentro del bloque de declaraciones de la clase y codificar la implementación de la función en otro archivo aparte. Esto es cuando se denomina función fuera de línea.

Page 22: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Definición de Funciones Miembro o Métodos

Pro

gra

mació

n I

class Punto{ private: int X; int Y;

public:

void visualizar (void){

cout<<“Coord X es:”<<X;

cout<<“Coord Y es:”<<Y;

}

};

class Punto{ private: int X; int Y;

public:

void visualizar( );

};

void Punto::visualizar( ){

cout<<“Coord X es:”<<X;

cout<<“Coord Y es:”<<Y;

}

Función definida en Línea Fuera de Línea:

Page 23: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Clases y ObjetosP

rog

ram

ació

n I

#include “conio.h”#include “iostream”using namespace std;

class Estudiante{ //Definición de clase private: char nombre[25]; //Atributos de la clase int cedula; public: void leerDatos(); //Función miembro void mostrarDatos(); //Funcion miembro};

void Estudiante::leerDatos() //Imp. de funcion miembro{ cout<<“\nNombre: ”; cin.get(nombre,24); cout<<“\nCedula: ”; cin>>cedula;}

void Estudiante::mostrarDatos() //Imp. de funcion miembro{ cout<<“\nNombre: ”<<nombre; cout<<“\nCedula: ”<<cedula;}

Page 24: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Clases y ObjetosP

rog

ram

ació

n I

void main(){ Estudiante Objeto; //Instanciación de objetos

Objeto.leerDatos (); //Llamada a leerDatos con Objeto Objeto.mostrarDatos(); //Llamada a mostrarDatos con Objeto

getch(); }

Page 25: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Para Varios Estudiantes… Vectores de Objetos

Pro

gra

mació

n I

void main(){ Estudiante Vector[10]; //Instanciación de Vector de obj. estático

int tam; cout<<“Cantidad de Estudiantes: ”; cin>>tam;

Estudiante *vector = new Estudiante[tam]; //Instanciación de vector de obj. dinámico for(int i=0; i <tam; i++){ vector[i].leerDatos(); vector[i].mostrarDatos(); } getch();}

Page 26: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Constructores

Es una función miembro con un propósito específico que se ejecuta automáticamente cuando se crea un objeto de una clase.

Generalmente, un constructor se utiliza para inicializar los datos miembros de una clase.

No retorna ningún valor (ni un void), pero si puede tomar los parámetros que requiera.

Debe tener el mismo nombre de la clase.

Pro

gra

mació

n I

Page 27: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Constructores

#include “iostream.h”

#include “conio.h”

class cubo{

int alto;

int ancho;

int lado;

public:

cubo(); //Constructor por defecto

cubo(int x, int y, int z); //Constructor alternativo

int getAlto();

//… Definición de otras funciones

};

Pro

gra

mació

n I

Page 28: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Constructores

cubo::cubo(){ alto=5; }

cubo::cubo(int x, int y, int z){ alto = x; ancho = y; lado = z; }

int cubo::getAlto(){ return alto; }

void main (void) { cubo a; //Ejemplo de uso del Constructor por defecto cout<<“\nEl alto de a es: ”<<a.getAlto();

cubo b(3,2,6); //Ejemplo de uso del Constructor alternativo cout<<“\nEl alto de b es: ”<<b.getAlto(); getch();}

Pro

gra

mació

n I

Page 29: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Constructores

Cuando se crea un objeto automáticamente se ejecuta el constructor por defecto. Tal es el caso de cubo a;

Cuando se crea un objeto, se pasan los parámetros necesarios para su instanciación, como: cubo b(3,2,6);

Esta declaración crea una instancia c de la clase cubo, pasando los parámetros al constructor con los valores especificados.

Otra forma de crear un objeto es: cubo *c=new cubo(3,2,6);

El operador new invoca de forma automática al constructor del objeto que se crea.

Pro

gra

mació

n I

Page 30: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Destructores

Son las funciones que se ejecutan automáticamente cuando se destruye un objeto.

Tienen el mismo nombre del constructor, pero se diferencian en que está precedido del carácter ~

No deben tener ningún tipo de retorno.

No pueden aceptar parámetros.

Sólo puede existir un destructor.

Generalmente se utilizan para liberar memoria que fue asignada por el constructor.

Pro

gra

mació

n I

Page 31: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Destructores

C++ crea un destructor vacío por defecto en caso de no existir uno declarado explícitamente.

Si el ámbito del objeto es local, el destructor es llamado cuando el control es pasado fuera de su bloque de definición.

Si el objeto fue creado dinámicamente (con new) el destructor es llamado cuando se invoca el operador delete.

Pro

gra

mació

n I

Page 32: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Destructoresclass cubo{

private:

int alto;

int ancho;

int lado;

public:

cubo(int x, int y, int z){alto=x; ancho=y; lado=z; } //Constructor

~cubo(); //Destructor

//…definición de otras funciones

};

cubo::~cubo(){

cout<<“Cubo destruido \n”;

}

void main(){

cubo c(2,3,4);

c.~cubo();

getch();

}

Pro

gra

mació

n I

Page 33: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Destructores

class Ejemplo{

private:

int valor;

public:

Ejemplo(){valor=0; }

void Delete() {delete this; }

};

void main()

{ Ejemplo *S4=new Ejemplo();

delete S4; //No se puede hacer

S4->Delete(); // OK

}

Pro

gra

mació

n I

Page 34: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Herencia

La Herencia es una de las característica de C++ que da más poder al concepto de clase.

C++ soporta Herencia simple y herencia múltiple. La Herencia Simple es cuando se tiene una sola clase padre y la Herencia Múltiple cuando se tiene mas de una clase padre.

Pro

gra

mació

n I

Page 35: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Herencia Simple#include “iostream”

using namespace std;

class Caja{ //Clase Padre private: int ancho, alto; public: void DefinirAncho(int an) {ancho=an;} void DefinirAlto(int al) {alto=al;}};

class CajaColor : public Caja { //Clase Hija int color; public: void DefinirColor(int c){color=c;} };

void main(){ CajaColor cc; cc.DefinirColor(5); //Función no heredada cc.DefinirAncho(3); //Función heredada cc.DefinirAlto(50); //Función heredada}

Pro

gra

mació

n I

Page 36: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Herencia Simple

Si la herencia es public, la clase hija podrá usar los atributos y métodos de la sección pública de la clase padre en forma pública, es decir desde el main. Podrá usar la sección protegida pero desde dentro de sus métodos.

class CajaColor : public Caja {

};

Si la herencia es protected, la clase hija podrá usar los atributos y métodos de la sección pública y protegida de la clase padre pero desde dentro de sus métodos. Haciéndolos dentro de ella protegidos. No tendrá acceso desde el main.

class CajaColor : protected Caja { };

Pro

gra

mació

n I

Page 37: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Herencia Simple

Si la herencia es private, la clase hija podrá usar los atributos y métodos de la sección pública y protegida de la clase padre pero desde dentro de sus métodos. Haciéndolos dentro de ella privados. No tendrá acceso desde el main.

class CajaColor : private Caja { };

Si no se coloca el tipo de herencia se asume protegida

class CajaColor : Caja { };

La sección privada de una clase padre es no accesible desde una clase hija.

Pro

gra

mació

n I

Page 38: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Herencia SimpleP

rog

ram

ació

n I

Programa 1 Programa 2 Programa 3

Archivo: Ejemplos de Herencia.doc

Page 39: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Herencia: Resolución de AmbigüedadesDos clases con funciones miembro con el mismo nombre.

#include “conio.h”#include “iostream”using namespace std;class A {

public:

int funcion() {return 1; }

};

class B: public A {

public:

int funcion() {return 2; }

};

void main()

{ B b1;

cout << b1.funcion()<<endl;

cout << b1.A::funcion();

getch();

}

Pro

gra

mació

n I

void main()

{ B* b2= new B;

cout << b2->funcion()<<endl;

cout << b2->A::funcion();

getch();

}

Page 40: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Herencia MúltipleP

rog

ram

ació

n I

class Circulo{ float radio;public: Circulo(float r) {radio = r;} float Area() {return radio*radio*3.14;} };

class Mesa {float altura;public: Mesa(float h) {altura=h;} float Altura() {return altura;} };

class Mesa_Redonda: public Mesa, public Circulo{ char color[15]; char modelo[25];public: Mesa_Redonda(char *, char *);};

Mesa Circulo

MesaRedonda

color

modelo

altura

radio

Page 41: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Herencia MúltipleP

rog

ram

ació

n I class A{

public: int valor; };

class B: public A{};

class C: public A{};

class D: public B{}, public C{public: int Valor() {return valor; } // valor es ambiguo ERROR int Valor(){return C::valor; }; // valor no ambiguo

void main(){D d;int v=d.B::valor; //Referencia sin ambiguedadesD* objeto = new D;int w=objeto->B::valor } //Referencia sin ambiguedades

A A

B C

D

Page 42: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Invocar Constructores de la Clase Padre

Pro

gra

mació

n I

#include “iostream.h”#include “conio.h”

class Empleado{ string nombre; float sueldo;public: Empleado(string xnom, float xsue) { nombre=xnom; sueldo=xsue; } string getNom(){ return nombre; } float getSue(){ return sueldo; } };

class Manager : public Empleado { string departamento;public: Manager(string n, float s, string d); string getDep(){ return departamento; }};

Manager::Manager(string n, float s, string d) : Empleado(n, s){ departamento=d; }

Page 43: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Invocar Constructores de la Clase Padre

Pro

gra

mació

n I

void main(){

Manager supervisor(“Luis Perez”, 500000.0, ”Ventas”);

cout<<"\nNombre: "<<supervisor.getNom(); cout<<"\nSueldo: "<<supervisor.getSue(); cout<<"\nDepartamento: "<<supervisor.getDep(); getch();}

Se invoca al constructor alternativo de la clase Manager y éste

constructor antes de ejecutarse invoca al constructor alternativo de

la clase Padre (Empleado)

Page 44: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Herencia MúltipleP

rog

ram

ació

n I

Programa 4

Archivo: Ejemplos de Herencia.doc

Page 45: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Funciones AmigasP

rog

ram

ació

n I

• Existen funciones que no pertenecen a una clase pero se pueden declarar como amigas de ella y así tener el derecho de acceder a la parte privada de la misma.

#include ”iostream.h”#include “conio.h”

class numero{ friend void asignar_valor(numero *, int ); int x; public: numero(){x=0;} void imprimir();};

void numero::imprimir(void){ cout << x << endl; }

void asignar_valor (numero *c, int nx){ c->x = nx; }

Page 46: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Funciones AmigasP

rog

ram

ació

n I void main()

{ int n; numero m; cout<<"El valor de la variable x antes de activar la funcion amiga: "; m.imprimir();

cout<<"Dar un valor para x:"; cin>>n;

asignar_valor(&m, n);asignar_valor(&m, n); //como no pertenece a la clase se llama sin objeto

cout<<"El valor de la variable x después de activar la funcion amiga: "; m.imprimir();

cout<<"\nPresione una Tecla para Continuar"; getch();}

Page 47: Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

:: Prof. Yeniffer Peña

Pro

gra

mació

n I

Programación Orientada a ObjetosProgramación Orientada a Objetos

Finalización