PdP AP 02 POO con C

Páginas: 19 (4741 palabras) Publicado: 4 de septiembre de 2015
U.T.N – F.R.T.L. – Paradigmas de Programación- Ing. Horacio Martín
1

Programación Orientada a Objetos con C++

1) Estructura con declaración de funciones miembro o métodos
En C++ podemos asociar las funciones a los datos mediante una estructura que incluya dentro
de su definición los prototipos de esas funciones:
// struct punto con funciones miembros
#include
struct punto
{
int x;int y;
void inicializa(int, int);
void desplaza(int, int);
void visualiza();
};
void punto::inicializa(int abs, int ord)
{
x=abs;
y=ord;
}
void punto::desplaza(int dx, int dy)
{
x+=dx;
y+=dy;
}
void punto::visualiza()
{
cout << "Estoy en : " << x << ", " << y << "\n";
}
void main ()
{ punto a, b;
a.inicializa(5, 2);
a.desplaza(-2,4);
a.visualiza();
b.inicializa(1,-1);
b.visualiza();
}
En estecódigo lo único inusual es el empleo del operador :: para indicar la pertenencia de una
función a una determinada estructura. También observamos que para invocar ahora a las
funciones empleamos el operador . (punto) tal como lo hacíamos para acceder a los campos
de la estructua.
2) Clase punto
La estructua en C++ es un caso particular de la clase. La declaración de una clase se parece a
la de unaesturctua, pero empleando la palabra reservada class:
// clase punto
#include
class punto
{private:
int x;
1

Delannoy – Aprender C++ - Cap. VI

1

U.T.N – F.R.T.L. – Paradigmas de Programación- Ing. Horacio Martín
int y;
public:
void inicializa(int, int);
void desplaza(int, int);
void visualiza();
};
void punto::inicializa(int abs, int ord)
{
x=abs;
y=ord;
}
void punto::desplaza(int dx,int dy)
{
x+=dx;
y+=dy;
}
void punto::visualiza()
{
cout << "ubicacion: " << x << ", " << y << "\n";
}
void main ()
{
punto a, b;
a.inicializa(5,2);
a.visualiza();
a.desplaza(-2,4);
a.visualiza();
b.inicializa(1,-1);
b.visualiza();
}
El código anterior se parece al del ejemplo 1, excepto en que ahora se han empleado las
especificaciones public y prívate para los miembros (atributos o métodos) dela clase.
Por omisión los miembros son privados. Los miembros privados solo pueden ser accedidos por
métodos de la propia clase, en tanto que los miembros públicos son accesibles por cualquier
otra clase.
3) Clase punto con constructor
En en ejemplo 2 observamos que el programa que utilice esta clase debe prever el empleo del
método inicializa ya que de lo contrario se produciría un error. Paraevitarlo se emplea un
método especial llamado constructor. El constructor debe tener el mismo nombre que la clase
y no puede tener valor de retorno. Este método es invocado automáticamente al crear un
objeto (instancia) de la clase.
Otro método especial es el destructor: este método se invoca automáticamente cuando se
destruye un objeto y su utilidad la veremos más adelante. Lleva también el mismonombre que
la clase pero precedido del símbolo ~.
// clase punto con constructor y destructor
#include
class punto
{
int x;
int y;
public:
void desplaza(int, int);
void visualiza();
punto(int abs, int ord); // constructor
~punto(); // destructor

2

U.T.N – F.R.T.L. – Paradigmas de Programación- Ing. Horacio Martín
};
void punto::desplaza(int dx, int dy)
{
x+=dx;
y+=dy;
}
voidpunto::visualiza()
{
cout << "ubicacion: " << x << ", " << y << "\n";
}
punto::punto(int abs, int ord) // constructor inline
{
cout << "constructor del punto: " << abs << ", " << ord << "\n";
x=abs;
y=ord;
}
punto::~punto()
{
cout << "destructor del punto: " << x << ", " << y << "\n";
}
void main ()
{ punto a(5,2);
a.visualiza();
a.desplaza(-2,4);
a.visualiza();
punto b(1,-1);
b.visualiza();
}
4) Claseazar
Veremos ahora la clase que llamamos azar que tiene como atributo un array de 10 enteros. El
constructor de esta clase se programa para que cargue el array con números aleatorios en un
rango indicado por el parámetro max.
// clase azar con atributos estáticos (arreglo de tamaño fijo)
#include
#include
// para la función rand
class azar
{ int val[10] ;
public:
azar...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • POO c++
  • C# Poo
  • Ap Ndice C
  • ASTM C 939
  • Poo En C#
  • Poo En C++
  • c# poo
  • PT DP C 02 Excavación

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS