domingo, 21 de julio de 2013

constructores y destructores

los constructores y destructores 
son funciones miembro especiales de clases ,estas sirven  para construir  y destruir a los objetos de dichas clases.la construcción (constructor) se utiliza para inicializar a los objetos a ciertos valores o para asignaciones de memoria.
en contraparte ,la destrucción(destructor) del objeto se hace para liberar los espacios de memoria o limpieza.
los constructores y destructores se declaran dentro de la misma clase(como cualquier otra función miembro)
pero deben de llevar el mismo nombre de la clase. estos también pueden declararse fuera  de su clase utilizando la conexión de los 2 puntos doble"::" igual que como se puede hacer con las demás funciones

sin embargo hay algunas restricciones que aplican para los  constructores y destructores

  1. No pueden tener ningún  tipo de retorno  ni siquiera nulo (void).
  2. No pueden usarse apuntadores (pointers) y/o referencias, ya que  no es posible tener la dirección de estas 
  3. No pueden ser  declarados estaticos(static) constantes(const) o volatiles(volatile).
  4. No pueden ser declarados como virtuales
constructores con parámetros 
múltiples funciones con el mismo nombre pueden existir en un programa en c++,mientras que su lista de parámetros sea diferente.lo mismo aplica para las funciones miembro en las clases ,incluyendo a los constructores.Un constructor podría tomar un argumento entero(int) , por ejemplo,mientras otro puede tener un argumento tipo(double) doble.

métodos
En la programación orientada a objetos, un método es una subrutina cuyo código es definido en una clase y puede pertenecer tanto a una clase, cómo es el caso de los métodos de clase o estáticos, como a un objeto, como es el caso de los métodos de instancia.
sintaxis
()
{
instrucciones;
}

viernes, 19 de julio de 2013

Definiciones de Programación Orientada a Objetos

Programación Orientada a Objetos

es una filosofía , un modelo de programación ,con su teoría y su metodología ,que permite el diseño de aplicaciones orientada a objetos.
la poo se utiliza para modelar objetos o entidades del mundo real.
El elemento básico de este paradigma de la programación es el objeto.

encapsulacion
empaquetar o proteger las variables miembro con los métodos miembro

¿beneficios de encapsulacion?

  • capacidad de crear modulos.
  • protección de información
¿que es un mensaje?
cuando un objeto quiere que otro objeto ejecute una de sus funciones miembro.

partes de un mensaje:


  1. el objeto  al cual se manda el mensaje 
  2. el método o función miembro que debe seguir
  3. los parámetros que necesita ese método

ventajas de los mensajes
el comportamiento de un objeto esta completamente determinado por sus métodos , asi que los mensaj
no necesita formar parte del mismo proceso


clases
es una plantilla que define las variables y los métodos que son comunes para todos los objetos de un mismo tipo.
objeto
es la representación de un concepto para un programa y contiene toda la información necesaria para abstraer dicho objeto y también se le puede llamar instancia de una clase
características de los objetos:

  • identidad 
  • comportamiento 
  • estado

herencia
es una herramienta que ayuda a la solución de  un problema de forma organizada
permite definir nuevas clases partiendo de otras ya existentes
las clases que se derivan de otras ,heredan todo su comportamiento
la herencia es una de las piedras angulares de la prog.o.o ya que permite la creacion de clasificaciones jerárquicas,usando la herencia ,podemos crear una clase general que defina caracteristicas comunes para un grupo de objetos relacionados.

poliformismo
es una propiedad  a los objetos comportarse de manera diferente para diferentes contextos.
con el proposito de crear una interfaz comun para el pase de mensaje a objetos de dif tipos.

abstracción
Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características




ventajas de clases

  • las clases derivadas proporcionan comportamientos especializados a partir de los elementos comunes que hereda la clase base 
  • los programadores pueden implementar las llamadas superclase abstractas que definen comportamientos genéricos 
especificadores de acceso
  • private
  • protected
  • public




miércoles, 17 de julio de 2013

clases y objetos


clase y objetos 



una clase (class)es un concepto expandido de una estructura de datos en lugar de manejar solo datos , una clase puede manejar ademas funciones.Un objeto es una instancia de una clase.En términos de variables, una clase equivaldría al "tipo"y un objeto seria la variable. las clases son declaradas usando la palabra "class"y su forma general o formato seria:

 class nombre {
 especificador_de_acceso_1: 
{componentes 1};
 especificador_de_acceso_2: 
{componentes 2};
 .
 .
 }
nombre_objeto1,nombre_objeto2,....nombre _objeto_n;

*donde los nombres de las clases y de los objetos debe ser identificadores validos.

los componentes pueden ser datos o declaración de funciones.El especificador de acceso puede ser tipo privado (private),publico(public) y (protected)

Estos especificadores modifican los derechos de acceso a los componentes de la siguiente  forma:


  1. Privados:estos componentes son accesibles únicamente por componente de la misma clase o por sus "amigos".
  2. Protegidos:similar al anterior pero ademas pueden ser accesados por componentes de sus clases privadas 
  3. Públicos: estos pueden ser accesados por todos.
*por default todos los componentes en una clase son privadas a menos de que se especifique otra cosa.

#include<iostream>
usingnamespace std;
class cRectangulo{//"cRectangulo" es el nombre de la clase private
private:
int x,y;
public:
void tomar_valores(inta a , int b) {x=a ;y=b;}
int area() {return (x*y);}
}rect;                                 //"rect" es el nombre del objeto 
int main() {
rect.tomar_valores(3,4);
cout<<"area:"<<rect.area()<<endl;
}
return o;
===================================================
#include <iostream>
using namespace std ;
class  CRectangulo {
int x ,y;
public:
void tomar_valores(int,int); //aquí  también podemos solo nombrar a la función 
};
void CRectangulo :: tomar_valores(int a , int b) { // Aquí es la declaración de la función.

x=a;
y=b;
}
int main () {
cRectangulo rect ;// los objetos también se pueden declarar  fuera de la clase. 
rect.tomar_valores(3,4);
cout<<"area:"<<rect.area()<<"\n";
return 0 ;
}

salida pantalla:
_12...

En este programa los 2 puntos dobles "::" se utilizan para definir desde fuera de una clase ; de lo contrario se tomaría como definición de una función global.

==================================================

# include<iostream >
using namespace std;
class cRectangulo {
int x,y;
public

void tomar_valores(int,int);
int area(){return(x*y);}
};
void cRectangulo:: tomar_valores(int a, int b);{
x=a;
y=b;
int main (){
cRectangulo rect ,rectb;
rect.tomar_valores(3,4);.
rectb.tomar_valores(5,6);
cout<<"rect.area:"<<rect.area()<<endl;
cout<<"rectb.area"<<rectb.area()<<"\n";
return 0;
}

salida :rect area:_12
          rectb area :_30