Anda di halaman 1dari 16

Programación Orientada a Objeto

Ejemplo No.1

Herencia simple realizar que una moto y un carro avance

#include <iostream>
using namespace std;

class Vehiculo {
public:
void avanza() {}
};
class Coche : public Vehiculo {
public:
void avanza(void)
{ cout << "Avanza coche." << endl; }
};
class Moto: public Vehiculo {
public:
void avanza(void)
{ cout << "Avanza moto." << endl; }
};

int main()
{
Moto t;
Coche c;

t.avanza();
c.avanza();
return 0;
}

Ejemplos o Ejercicios No.2.

Clase. Realizar lo siguiente.

Elementos
Clase: Descripción abstracta de un grupo de objetos (Patrón).
Objeto: Elemento con identidad propia.
Atributo: Variables definidas en la clase.
Método: Funciones definida en la clase.
Mensaje: Acción incorporada en el objeto.
Realizado

Clase: estudiantes.
Objeto obj.
Atributo: nombre, apellido, código.
Métodos: ingresar, eliminar, mostrar, buscar.

Ejemplo No.2

#include<iostream>
using namespace std;
class persona{
string nom,ape;

int ced;

public:

void ingresar(){
cout<<"Ingresar"<<endl;
cout<<"--------"<<endl;
cout<<"Nombre: ";cin>>nom;
cout<<"Apellido: ";cin>>ape;
cout<<"Cedula: ";cin>>ced;}

void mostrar(){
cout<<"Mostrar"<<endl;
cout<<"-------"<<endl;
cout<<"Nombre: "<<nom<<endl;
cout<<"Apellido: "<<ape<<endl;
cout<<"Cedula: "<<ced<<endl;}};

main(){
persona obj;
obj.ingresar();
system("cls");
obj.mostrar();
system("pause");}

Ejercicios o Ejemplos No.3

Ya hemos tenido una aproximación del concepto de clase y objeto. Generalmente


una clase representa de manera formal un concepto de la realidad, en el mundo
real dichos conceptos no se encuentran aislados sino que generalmente
mantienen relaciones entre sí. Por ejemplo podríamos tener un objeto
llamado jose que es una instancia de la clase obrero. Pero un obrero es a la vez
un asalariado, y en un nivel de abstracción mayor un asalariado es una persona.
Este tipo de relaciones de es un se intentan representar en C++ mediante la
definición de herencia, que define formalmente la relación es un entre las clases.
 persona
 asalariado
 obrero

De la misma manera, podríamos tener otro objeto pedro que es una instancia de la
clase medico. Cómo pedro trabaja para un laboratorio de productos famaceúticos,
es también un asalariado, pero no un obrero. De esta manera nos queda una
realación en el nivel superior de nuestra jerarquía de clases tendríamos
que: medico y obrero son asalariados y a su vez personas.

 persona
 asalariado
 obrero
 medico

Si bien podemos seguir la jerarquía de clases hacia arriba diciendo "es un" hay
que tener en cuenta que no podemos decir ni que un obrero es un medico, ni que
un medico es un obrero, aunque ambos sean asalariado y persona

#include <iostream>
#include <cstring>
using namespace std;
//definición de la clase Numero
class persona
{
public:
persona(char[40] = "", int = 1);
void establecerEdad(int);
void mostrarEdad(void);
void establecerNombre(char[40]);
void mostrarNombre(void);
private:
int edad;
char nombre[40];
};

class asalariado : public persona {


public:
asalariado(char[40] = "" , int = 1, double = 0);
void establecerSueldo(double = 0);
void mostrarSueldo(void);
private:
double sueldo;
};

class obrero : public asalariado {


public:
obrero(char[40] = "" , int = 1, double = 0, char[40] = "Funciones Generales");
void establecerCargo(char[40]);
void mostrarCargo(void);
private:
char cargo[40];
};

class medico : public asalariado {


public:
medico(char[40] = "" , int = 1, double = 0, int = 0);
void establecerCantPacientes(int);
void mostrarCantPacientes(void);
private:
int cantpacientes;
};

persona::persona(char nom[40], int ed){


establecerEdad(ed);
establecerNombre(nom);
}
void persona::establecerEdad(int ed) {edad = ed;}
void persona::mostrarEdad(void){ cout << "Edad: "<< edad << endl;}
void persona::establecerNombre(char nom[40]){strcpy (nombre,nom);}
void persona::mostrarNombre(void){cout << "Nombre: " << nombre << endl;}

asalariado::asalariado(char nom[40] , int ed, double suel){


establecerEdad(ed);
establecerNombre(nom);
establecerSueldo(suel);
}
void asalariado::establecerSueldo(double suel){sueldo = suel; }
void asalariado::mostrarSueldo(void){ cout << "Sueldo: " << sueldo << endl;}

obrero::obrero(char nom[40] , int ed, double suel, char car[40]){


establecerEdad(ed);
establecerNombre(nom);
establecerSueldo(suel);
establecerCargo(car);
}
void obrero::establecerCargo(char car[40]) {strcpy (cargo,car);}
void obrero::mostrarCargo(void) { cout << "Cargo: " << cargo << endl; }

medico::medico(char nom[40] , int ed, double suel, int cant){


establecerEdad(ed);
establecerNombre(nom);
establecerSueldo(suel);
establecerCantPacientes(cant);
}
void medico::establecerCantPacientes(int cant) { cantpacientes = cant; }
void medico::mostrarCantPacientes(void) { cout << "Cantidad de pacientes: " <<
cantpacientes << endl; }

//Probamos la clase.
int main()
{

medico pedro("Pedro Gonzales", 40, 5457.45, 15);


cout << "********************" << endl;
pedro.mostrarNombre();
pedro.mostrarEdad();
pedro.mostrarSueldo();
pedro.mostrarCantPacientes();
cout << "********************" << endl;
obrero jose("Jose Alvarez", 54, 1200.32, "Tornero Calificado");
jose.mostrarNombre();
jose.mostrarEdad();
jose.mostrarSueldo();
jose.mostrarCargo();
cout << "********************" << endl;
medico juan;
juan.mostrarNombre();
juan.mostrarEdad();
juan.mostrarSueldo();
juan.mostrarCantPacientes();

return 0;
}

Ejercicios o Ejemplos No.4

Ejercicios para realizar de varias personas quien están corriendo y leyendo.

#include <iostream>

using namespace std;

class Persona
{
public:
Persona(int, string);

void leer() const;


void correr() const;
private:
string nombre;
int edad;
};
Persona::Persona(int edad_, string nombre_)
{
edad = edad_;
nombre = nombre_;
}
void Persona::leer() const
{
cout << "Soy " << nombre << " y estoy leyendo un libro.\n";
}
void Persona::correr() const
{
cout << "Soy " << nombre << " y estoy corriendo.\n";
}
int main()
{
Persona p1(20, "Alejandro");
Persona p2(19, "Maria");
Persona p3(21, "Juan");

p1.leer();
p2.correr();
p3.leer();
p3.correr();
(void)cin.get();
return 0;
}

Ejercicios o Ejemplos No.5


Realizar lo siguiente. Esquema de programación orientado a objetos
(encapsulamiento y herencia.
#include <iostream>
#include <locale>

using namespace std;


const double PI = 3.141592;

class Figura{
protected:
float x;
public:
Figura(float cx=0){
x = cx;
}
virtual float Perimetro() = 0;
virtual float Area() = 0;
};

// Clases derivadas
class Circulo: public Figura{
public:

Circulo(float radio){
x = radio;
}
float Perimetro(){
return 2* PI * x;
}
float Area(){
return PI * x * x;
}
};

class Cuadrado: public Figura


{
public:
Cuadrado(float lado){
x = lado;
}
float Perimetro(){
return 4 * x;
}
float Area(){
return x * x;
}
};
int main(){
setlocale(LC_ALL, "");
float l, r;

cout << "Entre el lado del cuadrado" << endl;


cin >> l;

cout << "Entre el radio del círculo" << endl;


cin >> r;

Cuadrado cuad1(l);
Circulo Circ1(r);

cout << "El perimetro del circulo es:" << Circ1.Perimetro() << endl;
cout << "El área del circulo es:" << Circ1.Area() << endl;
cout << "El perimetro del cuadrado es:" << cuad1.Perimetro() << endl;
cout << "El area del cuadrado es:" << cuad1.Area() << endl;}

Ejercicios o Ejemplos No.6


Realizar lo siguiente. Esquema de programación orientado a objetos
(Polimorfismo)

#include <iostream>
#include <locale>

using namespace std;


const double PI = 3.141592;

class Figura{
protected:
float x;
public:
Figura(float cx=0){
x = cx;
}
virtual float Perimetro() = 0;
virtual float Area() = 0;
};

// Clases derivadas
class Circulo: public Figura{
public:

Circulo(float radio){
x = radio;
}
float Perimetro(){
return 2* PI * x;
}
float Area(){
return PI * x * x;
}
};

class Cuadrado: public Figura


{

public:
Cuadrado(float lado){
x = lado;
}
float Perimetro(){
return 4 * x;
}
float Area(){
return x * x;
}
};

int main(){
setlocale(LC_ALL, "");

float l, r;
Figura *figuras[10];

cout << "Entre el lado del cuadrado" << endl;


cin >> l;
cout << "Entre el radio del círculo" << endl;
cin >> r;

figuras[0] = new Cuadrado(l);


figuras[1] = new Circulo(r);

for(int i = 0; i < 2; i++){


cout << "El perímetro de la figura " << i+1 <<
", es: " << figuras[i]->Perimetro() << endl;
cout << "El área de la figura" << i+1 <<
", es: " << figuras[i]->Area() << endl;
}
}

Ejercicios o Ejemplos No.7

Simular la pelea de dos gatos, crear dos objetos gato e implementar una función
que le permita a un gato arañar a otro gato, cada arañazo que recibe un gato le
quita una vida. El programa debe de decidir de forma aleatoria que gato es
arañado, todo esto mientras ninguno de los gatos tengan 0 vidas. Al final del
programa deberá de decir que gato ganó.

#include <iostream.h>
#include <string.h>
#include <stdlib.h>
class gato
{
private:
char color[20]; //atributo
int vidas; //atributo
public:
gato(char c[]) //constructor
{
strcpy(color,c);
vidas = 9;
}
void miau() //comportamiento
{
cout<<"Miiaaauu!!!\n";
}
int devVidas() //función miembro
{ return vidas; }
void modVidas(int v) //función miembro
{ vidas = v; }
void arania(gato &otroGato)
{
otroGato.modVidas( otroGato.devVidas() - 1 );
otroGato.miau();
}
};
void main()
{
gato Tom("blanco"), Gardfield("negro");
int quienArania;
randomize(); //para que se generen nros randomicos
distintos
while( Tom.devVidas() > 0 || Gardfield.devVidas() > 0 )
{
quienArania = random( 2 );
if ( quienArania )
Tom.arania( Gardfield );
else
Gardfield.arania( Tom );
}
if(Tom.devVidas() == 0)
cout<<"Ganó Gardfield";
else
cout<<"Ganó Tom";
}

Ejercicios o Ejemplos No.8

Realizar el nombre de una pareja y en ambos que se suma.


#include <iostream>
using namespace std;

//------------------------
class Pareja
{
// atributos
double a, b;

public:
// constructor de base (null)
Pareja() {}

// constructror parametrizado
Pareja(double x, double y) : a(x), b(y) {}

// métodos
double getA();
double getB();
void setA(double n);
void setB(double n);
};

// implementación de los métodos de la clase Pareja


//
double Pareja::getA() { return a; }
double Pareja::getB() { return b; }
void Pareja::setA(double n) { a = n; }
void Pareja::setB(double n) { b = n; }

//------------------------
class Suma : public Pareja
{
// atributos de Suma
double resultado;

public:
// constructor
Suma(double a, double b) : Pareja(a, b) {}

// métodos de Suma
double calcular();
};

// implementación de Suma
//
double Suma::calcular() { return getA() + getB(); }
//------------------------
int main()
{
Suma s(80, 100);
cout << s.getA() << " + " << s.getB() << " = " << s.calcular() << endl;
cin.get();
return 0;
}

Ejercicios o Ejemplos No.9


#include <iostream>

using namespace std;

class Padre{

friend ostream& operator<<(ostream& o, const Padre& p) {

o << "PADRE" << endl; return o;

public:

virtual int ejemplo(int a) {}

void ejemplo(int a, int b) {}

virtual int otro(int x) {}

void otro(int a, int b, int c) {}

virtual void print() {}

};

class Hija : public Padre{

friend ostream& operator<<(ostream& o, const Hija& p) {

o << "HIJA" << endl; return o;

public:

int ejemplo (int a) {}

void ejemplo (int a, int b) {}

int otro(int x) {}

float otro(int x,int y) {}

void print() { cout << *this; }

};
class Nieta: public Hija {

public:

int ejemplo (int a) {}

};

Hija* Test (Padre *p) {

if (p) p->print(); return dynamic_cast<Hija*>(p);

};

Padre* Test (Hija *h) {

if (h) h->print(); return h;

};

int main(){

Nieta n; Padre* p = &n;

p->ejemplo(1);

p->ejemplo(1,2);

p->otro(1);

p->otro(1,2,3);

Hija *ph = &n;

ph->ejemplo(1);

ph->ejemplo(1,2);

ph->otro(1);

ph->otro(1,2);

/* TEST */

p=Test(new Padre());

ph=(Hija*)Test(new Hija());

if (p) cout << *p;

if (ph) cout << *ph;}

Anda mungkin juga menyukai