28
ALGORITMOS Y ESTRUCTURA DE DATOS 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.

Programacion Orientada a Objetos

Embed Size (px)

DESCRIPTION

Programacion Orientada a Objetos

Citation preview

Page 1: 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.

Page 2: 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 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()

Page 3: 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 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.

Page 4: 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 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.

Page 5: 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 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.

Page 6: 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 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.

Page 7: 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 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

Page 8: 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 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()

Page 9: 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 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

Page 10: 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 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

Page 11: 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 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;

};

Page 12: 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 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.

Page 13: 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 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];

}

Page 14: 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 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;

}

Page 15: 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 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();}

Page 16: 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 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

Page 17: 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 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.

Page 18: 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 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.

Page 19: 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 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.

Page 20: 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 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);

}

Page 21: 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 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()

Page 22: 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 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;

}

Page 23: 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 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;

}

Page 24: 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 24

PROGRAMACION ORIENTADA A OBJETOS

// Calcula el area del Rectangulo

float Rectangulo::Area()

{

return bmay*bmen;

}

float Rectangulo::Perimetro()

{

return 2*(bmay+bmen);

}

Page 25: 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 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();

};

Page 26: 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 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;

}

Page 27: 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 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;

}

Page 28: 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 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);

}