Programacion Orientada a Objetos
-
Upload
iveth-martell -
Category
Documents
-
view
224 -
download
0
description
Transcript of Programacion Orientada a Objetos
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 1
PROGRAMACION ORIENTADA A OBJETOS
La programación orientada a objetos (poo) es una nueva manera de enfocar la programación.
Toma las mejores ideas incorporadas en la programación estructurada.
La poo permite descomponer un problema en subgrupos relacionados.
En la poo, los objetos son los elementos principales de construcción.
Todos los lenguajes poo soportan encapsulación, herencia y polimorfismo.
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 2
PROGRAMACION ORIENTADA A OBJETOS Encapsulación
Mecanismo que agrupa el código y los datos y los mantiene protegidos frente a cualquier interferencia o mal uso.
El código y los datos pueden empaquetarse de la misma forma que se crea una caja negra.
Un objeto soporta encapsulación, los datos y código pueden ser privados y públicos.
Polimorfismo
Hacer una misma operación de diferentes formas, según los objetos sobre los que se aplica.
Permite que un nombre se usa para 2 o mas propósitos relacionados, pero técnicamente diferentes. Ejem,: abs(), labs(), fabs()
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 3
PROGRAMACION ORIENTADA A OBJETOS Interface genérica, múltiples métodos.
Permite reducir la complejidad.
La acción especifica ejecutado, depende de los datos.
Herencia
Es el proceso mediante el cual un objeto se define adquiriendo las propiedades de otro, es decir hereda los atributos y métodos de un objeto superior.
Con la herencia hacemos que un objeto soporte la clasificación jerárquica.
Ejemplo, el objeto león hereda todas las propiedades del objeto mamífero.
Al haber herencia , cada objeto define solo los atributos adicionales y específicos, y no los comunes al objeto quien hereda.
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 4
PROGRAMACION ORIENTADA A OBJETOS
Objeto
Es una cosa tangible o intangible, algo que se puede
reconocer visualmente o conceptualmente.
Un objeto es un paquete que contiene datos y código en forma
de funciones que operan sobre los datos del propio objeto.
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 5
PROGRAMACION ORIENTADA A OBJETOS
Un objeto se puede definir utilizando las siguientes
características.
Se identifica por un único nombre
Un objeto tiene estados, estos definirán totalmente las
propiedades asociadas con un objeto.
Un objeto tiene un conjunto de operaciones.
Un objeto tiene un conjunto de atributos. Los atributos
de un objeto contienen valores del estado durante la
vida de un objeto.
Ejemplo de objetos: aviones, automóviles, televisor,
motocicleta, etc.
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 6
PROGRAMACION ORIENTADA A OBJETOS
El nombre del objeto es bicicleta.
Los datos que guarda un
objeto se llama atributos
del objeto.
Las subrutinas que
operan sobre los datos se
llaman métodos.
Los objetos de un
programa se comunican
enviándose mensajes.
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 7
PROGRAMACION ORIENTADA A OBJETOS
En los objetos residen los datos de los lenguajes (números,
arrays, cadenas, etc.) y los métodos (funciones).
Notacion de un Objeto
Nombre Objeto
Datos
Métodos
Nombre Objeto
Atributos
Métodos
Coad/Yourdon OMT
Nombre Objeto
Datos y operaciones
Booch
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 8
PROGRAMACION ORIENTADA A OBJETOS
Clase
Una clase es una colección de objetos con atributos (datos)
y un conjunto de métodos comunes.
Un objeto es una instancia de una clase, es decir la clase es
el tipo de dato y el objeto viene a ser la variable real.
clase = datos + metodos
Una variable tradicional solo captura la estructura de datos
mas no su comportamiento. Automovil
Placa
Marca
Color
CalcularPrecio()
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 9
PROGRAMACION ORIENTADA A OBJETOS
Diagrama de Clase y Objeto
Los objetos se dibujan como una caja, en la que existe un
interior y exterior al mismo.
La caja se etiqueta con el nombre del objeto.
La caja representa la frontera entre el interior y el exterior
del objeto.
Datos Miembro
Métodos Miembro
Inte
rfaz
Exterior
Objeto
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 10
PROGRAMACION ORIENTADA A OBJETOS
Los datos miembros y métodos que están totalmente en el
interior de la caja, están ocultos al exterior, lo que significa
que estas características están encapsulados (privada).
Los datos miembros y métodos que se extienden fuera de
la caja, son accesibles desde el exterior y constituyen la
interfaz del objeto.
VerDatos()
Gato
Corre()
Nombre
ColorOjos
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 11
PROGRAMACION ORIENTADA A OBJETOS
Declaracion de una Clase
Una clase debe ser declarada antes de utilizar, para ello se
utiliza la siguiente sintaxis:
class <nombre_clase>
{ private:
dato(s) miembro(s);
funcion(es) miembro;
protected:
dato(s) miembro(s);
funcion(es) miembro;.
public:
funcion(es) miembro;
};
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 12
PROGRAMACION ORIENTADA A OBJETOS
Miembro privado
Solo son accesibles por las funciones miembro de la clase,
al ser privados ocultan la estructura de datos.
Miembro protegidos
Son accesibles por las funciones miembro de la clase y
también por las funciones miembro de la clase derivada.
Miembro publicos
Son accesibles desde cualquier parte del programa
completo.
Los miembros públicos forman el interfaz externo a través
del cual se utiliza el objeto.
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 13
PROGRAMACION ORIENTADA A OBJETOS
Implementacion de las funciones miembro de la clase
Implica la definición de cada una de las funciones miembro
de la clase.
Donde :: es el operador de ámbito de resolución, a través
del cual se indica a que clase pertenece la función.
<tipo dato> <Nombre Clase>::<Nombre Funcion>([<Parametros Formales>])
{
[ Declaracion de variables Locales];
Sentencia(s);
[return dato];
}
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 14
PROGRAMACION ORIENTADA A OBJETOS
Ejemplo
class rectangulo
{ int base,altura;
public:
void dimensiones(int, int);
int area();
};
// Implementando las funciones miembro
void rectangulo::dimensiones(int b, int h)
{ base=b; altura=h;
} int rectangulo::area()
{ return base*altura;
}
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 15
PROGRAMACION ORIENTADA A OBJETOS
Acceso a los miembros de una clase
A los miembros de una clase se accede de forma similar
que a una estructura, es decir utilizando el operador punto
(.) y el operador flecha(->).
Implica la definición de cada una de las funciones miembro
de la clase.
Para el ejemplo anterior esta es la función principal
int main()
{ rectangulo r; //declarar el objeto
r.dimensiones(3,5); //definir el tamaño
cout<<"area "<<r.area();}
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 16
PROGRAMACION ORIENTADA A OBJETOS
CONSTRUCTOR
Un constructor es una función especial que sirve para
construir o inicializar objetos.
En C++ la inicialización de objetos no se puede realizar en el
momento en que son declarados.
Un constructor es una función que sirve para construir un
nuevo objeto y asignar valores a sus miembros dato. Se
caracteriza por:
Tener el mismo nombre de la clase que inicializa
Puede definirse inline o fuera de la declaración de la clase
No devuelve valores
Puede admitir parámetros como cualquier otra función
Puede existir más de un constructor, e incluso no existir
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 17
PROGRAMACION ORIENTADA A OBJETOS
CONSTRUCTOR
Si no se define ningún constructor de una clase, el
compilador generará un constructor por defecto.
El constructor por defecto no tiene argumentos y
simplemente sitúa ceros en cada byte de las variables
instancia de un objeto.
Si se definen constructores para una clase, el constructor
por defecto no se genera.
Un constructor del objeto se llama cuando se crea el objeto
implícitamente: nunca se llama explícitamente a las
funciones constructoras.
El constructor por defecto es un constructor que no acepta
argumentos.
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 18
PROGRAMACION ORIENTADA A OBJETOS
Definicion de un Constructor
Un constructor se implementa igual que como cualquier otra
funcion:
<Nombre Clase>::<Nombre Constructor>([<Parametros Formales>])
{ Sentencia(s);
}
Si el constructor es de una sola línea, podemos definir
dentro de la declaración de la clase.
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 19
PROGRAMACION ORIENTADA A OBJETOS
DESTRUCTOR
Un destructor es una función miembro con igual nombre
que la clase, pero precedido por el carácter ~.
Una clase sólo tiene una función destructor que, no tiene
argumentos y no devuelve ningún tipo.
Un destructor realiza la operación opuesta de un
constructor, limpiando el almacenamiento asignado a los
objetos cuando se crean.
C++ permite sólo un destructor por clase. El compilador
llama automáticamente a un destructor del objeto cuando
el objeto sale fuera del ámbito.
Si un destructor no se define en una clase, se creará por
defecto un destructor que no hace nada.
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 20
PROGRAMACION ORIENTADA A OBJETOS
Definicion de un Destructor
Un Destructor se implementa igual que como cualquier otra
función:
<Nombre Clase>::~<Nombre Destructor>()
{
Sentencia(s);
}
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 21
PROGRAMACION ORIENTADA A OBJETOS
#include <iostream>
using namespace std;
// Declaracion de la clase
class Rectangulo
{ private:
float bmay;
float bmen;
public:
void Dimension(float,float);
void VerDim();
float Area();
float Perimetro();
};
Rectangulo
Bmay
bmen
Dimension(a, b)
VerDim()
Area()
Perimetro()
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 22
PROGRAMACION ORIENTADA A OBJETOS
//Programa principal
int main()
{
Rectangulo z;
float x,y;
cout<<"Base Mayor:";cin>>x;
cout<<"Base Menor:";cin>>y;
z.Dimension(x,y);
cout<<"El Area es:"<<z.Area()<<endl;
cout<<"El Perimetro es:"<<z.Perimetro()<<endl;
}
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 23
PROGRAMACION ORIENTADA A OBJETOS //Implementando las funciones miembro
// Inicializando las dimensiones
void Rectangulo::Dimension(float a, float b)
{ bmay=a;
bmen=b;
VerDim(); // Llamar a la funcion ver dimension
}
//Muestra la dimension
void Rectangulo::VerDim()
{ cout<<"Lado Mayor:"<<bmay<<endl;
cout<<"Lado Menor:"<<bmen<<endl;
}
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 24
PROGRAMACION ORIENTADA A OBJETOS
// Calcula el area del Rectangulo
float Rectangulo::Area()
{
return bmay*bmen;
}
float Rectangulo::Perimetro()
{
return 2*(bmay+bmen);
}
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 25
PROGRAMACION ORIENTADA A OBJETOS
#include <iostream>
using namespace std;
// Defclaracion de la clase
class Rectangulo
{ private:
float bmay,bmen;
public:
Rectangulo(float,float);
float Area();
float Perimetro();
void VerDim();
~Rectangulo();
};
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 26
PROGRAMACION ORIENTADA A OBJETOS
//Programa principal
int main()
{
float x,y;
cout<<"Base Mayor:";cin>>x;
cout<<"Base Menor:";cin>>y;
Rectangulo z(x,y);
z.VerDim();
cout<<"El Area es:"<<z.Area()<<endl;
cout<<"El Perimetro es:"<<z.Perimetro()<<endl;
}
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 27
PROGRAMACION ORIENTADA A OBJETOS //Implementando las funciones miembro
// Inicializando las dimensiones
Rectangulo::Rectangulo(float a, float b)
{ bmay=a; bmen=b;
}
// Destructor
Rectangulo::~Rectangulo()
{ cout<<"Destruyendo el objeto..."<<endl;
}
// Calcula el area del Rectangulo
float Rectangulo::Area()
{ return bmay*bmen;
}
A L G O R I T M O S Y E S T R U C T U R A D E D ATO S 28
PROGRAMACION ORIENTADA A OBJETOS
//Muestra la dimension
void Rectangulo::VerDim()
{
cout<<"Lado Mayor:"<<bmay<<endl;
cout<<"Lado Menor:"<<bmen<<endl;
}
// Calcula el Perimetro
float Rectangulo::Perimetro()
{
return 2*(bmay+bmen);
}