Está en la página 1de 4

PROGRAMACIÓN ORIENTADA A OBJETOS

NOMBRE: Karen Guaña

CURSO: Grupo-1

FECHA:

CONSULTA

1. Funciones virtuales
Una función virtual es una función miembro en la clase padre es declarada como ‘virtual’ que
espera redefinir en clases hijas. Es llamada atreves de un puntero de la clase padre .
/*
* Programación Orientada a Objetos
* Autor: Karen Guaña <kguanaa@ups.edu.ec>
*/
#include <iostream>
#include <string>
using namespace std;
//Clases
class Person{
private:
string nombre;
public:
Person(string);
virtual void mostrar ();
};

class Alumno:public Person{


private:
double nota;
public:
Alumno(string,double);
void mostrar();
};
//Constructores
Person::Person(string _nombre){
nombre=_nombre;
}
Alumno::Alumno(string _nombre,double _nota):Person(_nombre){
nota=_nota;
}
//Metodos
void Person::mostrar(){
cout<<"Nombre: "<<nombre;
}
void Alumno::mostrar(){
Person::mostrar();
cout<<"\nNota: "<<nota<<endl;
}
//Main
int main(){
//Utilizamos punteros
Person *vector[2];
vector[0]= new Alumno("Karen",9.56);
vector[0]->mostrar();
}

2. Funciones friend
Cuando se declara una función fríend de una clase esta es una función es externa a la definición
de la misma clase, pero que sin embargo al ser amiga de la clase tiene derecho y acceso a sus
miembros de datos públicos y privados atreves de los punteros.
/*
* Programación Orientada a Objetos
* Autor: Karen Guaña <kguanaa@ups.edu.ec>
*/
#include<iostream>
using namespace std;

class Numeros{
private:
int x,y;
public:
Numeros(int a=5,int b=8){
x=a;
y=b;
}
friend class Enteros;
};

class Enteros{
private:
Numeros N;
public:
Entero(){
N.x=5;
N.y=8;
}
void imprime() {
cout<<"Primer numero: "<<N.x<<" \nSegundo numero: "<<N.y<<endl;
}
};
int main(){
Enteros obj;
obj.imprime();
return 0;
}

Objetos dinámicos. Utilización de la palabra reservada new.


Acompañan a los arreglos, es decir si antes ocupábamos los arreglemos estáticos con la ayuda
de la palabra “new” ahora con los arreglos dinámicos no desperdiciamos memoria, también se
puede utilizar para asignar valores iniciales de la memoria.

Punto *p;
p = new Punto[100];

ANALISIS DEL CÓDIGO

Al momento de compilar si eliminamos la palabra virtual si se ejecuta el programa, pero el


método ‘habla’ ya no actúa como polimorfismo, ejecuta para todos el mismo método de la clase
padre que esta especificada como ‘’Grr’’.
Esto se debe a que la palabra virtual nos ayuda a que un método de la clase Padre lo podamos
compartir en diferentes clases hijas con diferente acción.
PARTE B
DIAGRAMA

También podría gustarte