55
1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

Embed Size (px)

Citation preview

Page 1: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

1

Tema #1Programación

Orientada a Objetos

Universidad Autónoma

Gabriel René Moreno

Elaborado por: Ing. Juan Carlos Contreras Villegas

Page 2: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

2

Objetivos

Los objetivos del presente tema son:– Conocer los conceptos la programación

orientada a objetos– Utilizar la notación de UML para la

representación de los diagramas de clases.

– Implementar los conceptos realizando pequeños programas demo C++

Page 3: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

3

Características

Esta basado en Objetos, se modela y se piensa en los Objetos y lo que estos pueden hacer, o lo que se puede hacer con estos.

Se pueden construir fácilmente nuevas aplicaciones sin mucho esfuerzo

La Herencia puede ser una herramienta muy útil en OOP, y al mismo tiempo puede ser FATAL.

Page 4: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

4

P.O.O. - Lenguajes

Ada Modula Smalltalk (Alan Kay) Java (Sun Microsystems) Eiffel C++ Object Pascal C#

Page 5: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

5

Conceptos

Clases & Objetos Atributos y Métodos Encapsulamiento Herencia Polimorfismo Generalización, Asociación, Agregación

Page 6: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

6

Abstracción

Concepto. Se define como la capacidad para examinar algo sin preocuparse de sus detalles internos.

• Existen dos tipos de abstracciones: abstracción de datos y abstracción funcional

Page 7: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

7

Abstracción de Datos

Consiste en utilizar los datos sin preocuparse por los detalles de su implementación, es decir, lo importante es saber que tipo de información se puede utilizar y no como está almacenado

Que Atributo Como Campo

Page 8: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

8

Abstracción funcional

Consiste en saber que es lo que hace un determinado proceso, pero no como lo hace.

Por ejemplo el proceso Ordenar de la clase Vector, sabemos que el método ordenará los elementos del vector, pero no nos interesa como lo hará.

Que método Como algoritmo

Page 9: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

9

Encapsulamiento

Consiste en reunir varias cosas para ser manipuladas como una sola unidad.

Por ejemplo al definir variables de tipo Registro estamos encapsulando los campos del registro.

Al definir una clase estamos encapsulando los atributos y los métodos.

Page 10: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

10

Abstracción y Encapsulamiento

La abstracción y el encapsulamiento son conceptos complementarios

La abstracción se enfoca a la vista exterior de un objeto

El encapsulamiento previene a otros objetos ver su interior, donde el comportamiento de la abstracción se ha realizado.

Page 11: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

11

Ocultamiento

Consiste en no permitir el acceso a los componentes de una clases (atributos, métodos)

Esto se logra con la visibilidad que ofrecen los lenguajes de programación.

Privado: Solo los miembros de la clase tienen acceso

Protegido: Solo los miembros de la clase y sus derivados tienen acceso

Público: Todos tienen acceso

Page 12: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

12

Modularidad

Este concepto ya viene desde la programación modular, y se refiere al hecho de realizar un programa por partes, a las cuales se las denomina módulos.

Un módulo es un archivo que contiene un conjunto de declaraciones y/o procesos. En OOP normalmente un módulo contiene la interfaz y la implementación de un o más clases relacionadas.

Page 13: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

13

CLASE

Page 14: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

14

CLASE

Una clase representa a un conjunto de objetos que comparten una estructura y un comportamiento comunes.

La estructura de un objeto se define en su clase, por lo que un objeto es en realidad la instancia de una clase.

Page 15: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

15

CLASE

Llacua – Vasquez

“Es una entidad que tiene Atributos(datos) y Procesos(métodos) inherentes al propósito y funcionamiento de la misma. Los atributos identifican las características de la clase y los procesos establecen su comportamiento”

Page 16: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

16

CLASE

Luis Joyanes Aguilar“Una Clase es un tipo definido por el

usuario(programador) que determina las estructuras de datos y las operaciones asociadas con este tipo”

“La Clase es simplemente un modelo que se utiliza para describir uno o más objetos del mismo tipo”

Page 17: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

17

OBJETO

Un objeto es una abstracción de una entidad del mundo real.

Toda interacción con el mundo externo es por medio de una interfase.

Page 18: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

18

OBJETO

Un objeto tiene:

•Un estado

•Un comporta-miento bien definido

•Una identidad única

Page 19: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

19

Estado

El estado de un objeto se compone de todas las propiedades de un objeto (estáticas)

Y los valores asociados a ellas (dinámicos).

Estos valores pueden ser:– Simples – O denotar a otro objeto.

Estado = Atributos = Datos miembro

Page 20: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

20

ATRIBUTOS

Concepto: Características que definen a la clase, es lo que el usuario (de la clase) puede ver. Es la abstracción.

Otro concepto: variables que están dentro de los objetos y que contienen los valores del objeto.

También son llamados: propiedades, datos miembro.

Page 21: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

21

ATRIBUTOS – Ejemplo1

Una Fracción está definido por un par de números naturales, los cuales se denominan el numerador y denominador.

Fraccion

Numerador

Denominador

num_den

Page 22: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

22

ATRIBUTOS – Ejemplo2

Un Fecha está definido por tres datos: día, mes y año.

Fecha

Día

Mes

Año

15/ 12/ 2005

Page 23: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

23

Comportamiento

El comportamiento de un objeto es la forma en que actúa y reacciona, en términos de sus cambios de estado e intercambio de mensajes con otros objetos.

El comportamiento de un objeto está determinado por las operaciones que pueden ser invocadas sobre el mismo.

Los tres tipos de operaciones más comunes son:

Page 24: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

24

MÉTODOS

Concepto: Son las operaciones que se pueden realizar con los objetos de la clase.

Otro concepto: Son los procesos (funciones o procedimientos) que permiten trabajar con los datos de los objetos

También son llamados: funciones miembro De acuerdo al trabajo que realizan los

métodos, estos se clasifican en:Constructores,destructores, ponedores, selectores.

Page 25: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

25

Tipos de Métodos

Constructores Destructores Modificadores Selectores Iteradores

Page 26: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

26

Constructor

El constructor es un proceso que se encarga de:– Reservar espacio de memoria para los

datos del objeto– Inicializar los atributos del objeto (darle un

estado inicial) Tipos de Constructor:

– Oficio, Copia, con Parámetros

Page 27: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

27

Constructor de oficio

Inicializa los atributos con valores definidos por el implementador de la clase.

Ej.

Fecha::Fecha()

{ d=1; m=1; a=2001;

}

Page 28: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

28

Constructor de copia

Inicializa los atributos del objeto con los datos provenientes de otro objeto de la misma clase.

Ej. Fecha::Fecha(const Fecha &f2){ d=f2.d; m=f2.m; a=f2.a;}

Page 29: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

29

Constructor con parámetros

Inicializa el objeto con datos provenientes de los parámetros.

Ej.

Fecha::Fecha(byte dd, byte mm,Word aa)

{ SetFecha(dd, mm, aa);

}

Page 30: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

30

Destructor

Liberar la memoria reservada para los datos del objeto.

La mayoría de los lenguajes lo tiene implementado por default por lo que solo se lo implementa cuando el objeto reserva memoria en tiempo de ejecución.

Page 31: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

31

Modificador

Permite cambiar el estado de un objeto, modificando los atributos del mismo.

Ej.

Void Fecha::SetDia(byte dd)

{ SetFecha(dd, m, a);

}

Page 32: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

32

Selector

Permite devolver el valor de los atributos sin alterar su estado.

Ej.

byte Fecha::GetDia()

{ return d;

}

Page 33: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

33

Identidad

Es la propiedad de un objeto que lo distingue de todos los demás objetos

No hay que confundir el nombre de un objeto con el objeto mismo.Ej. piolin != &piolin;

Puede haber varias variables que se refieran al mismo objeto, pero no varios objetos con la misma identidad.Ej. Canario *pointer = &piolin;

Puede haber objetos con el mismo estado pero identidades diferentes.Ej. Canario cantarin = piolin;

Conclusión: hay dos tipos de igualdad: de estado y de identidad.

Page 34: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

34

Métodos – Ejemplo1-2

CQuebrado

PonNumeradorPonDenominadorObtDenominadorObtNumeradorSimplificar

CVector

PonDimensionPonElementoObtDimensionObtElementoOrdenar

Representación gráfica de los métodos de las clases CQuebrado y CVector

Page 35: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

35

Método Constructor

El método constructor es un proceso cuyo trabajo consiste en: Reservar espacio de memoria para un objeto de la clase e inicializar los atributos del objeto.

El constructor es invocado explicitamente en Object Pascal, e implícitamente en C++.

Todas las clases definen al menos un método constructor.

Page 36: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

36

Contructor – Ejemplo1

Implementación en OPConstructor Cquebrado.Create;

Begin

num:=1;

den:=1;

End;

Implementación en C++

Cquebrado::Cquebrado()

{

num=1;

den =1;

}

Se inicializan los objetos de la clase Cquebrado como la fraccion 1/1

Page 37: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

37

Constructor – Ejemplo2

Implementación en OP

Constructor Cvector.Create;

Begin

dim:=0;

End;

Implementación en C++

Cvector::Cvector()

{

dim=0;

}

Se inicializan los objetos de la clase Cvector como un vector vacio, es decir, sin elementos

Page 38: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

38

Método Destructor

Concepto. El destructor es un proceso que se encarga de liberar el espacio de memoria asignado a los atributos del objeto y al objeto mismo.

Normalmente no es necesario implementar el destructor a menos que los atributos del objeto sean punteros.

Page 39: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

39

Destructor – Ejemplo1-2

Implementación en OPDestructor Cquebrado.Destroy;

Begin

------

End;

Destructor Cvector.Destroy;

Begin

-----

End;

Implementación en C++Cquebrado::~Cquebrado()

{

-------

}

Cvector::~Cvector()

{

------

}

Page 40: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

40

Método Ponedor

El método ponedor es un proceso cuyo trabajo consiste en asignar valores a los atributos de un objeto.

En una clase debe haber por lo menos un método ponedor para cada uno de los atributos.

Para los nombres de los procesos ponedores normalmente se utilizan los prefijos Set o Pon

Page 41: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

41

Ponedor – Ejemplo1 en OP

Procedure Cquebrado.PonNumerador(n:word);Begin num:=n;End;

Procedure Cquebrado.PonDenominador(d:word);Begin den:=d;End;

Page 42: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

42

CLASE – Ejemplo1

Deseamos construir un tipo de dato que permita almacenar datos de la siguiente forma: ¼, ½, 3/5 , 4/7, etc.

tal tipo de dato podría llamarse Cquebrado

Representación gráfica

CQuebrado

Page 43: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

43

CLASE - CQuebrado

Definición de la clase Cquebrado en Object PascalTYPE

CQuebrado = Classprivate

--------public

-------End;

Definición de la clase Cquebrado en C++

class Cquebrado {

private:

--------

public:

--------

};

Page 44: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

44

CLASE – Ejemplo1

Deseamos construir un tipo de dato que permita almacenar datos de la siguiente forma: ¼, ½, 3/5 , 4/7, etc.

tal tipo de dato podría llamarse Cquebrado

Representación gráfica

CQuebrado

Page 45: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

45

CLASE - CQuebrado

Definición de la clase Cquebrado en Object PascalTYPE

CQuebrado = Classprivate

--------public

-------End;

Definición de la clase Cquebrado en C++

class Cquebrado {

private:

--------

public:

--------

};

Page 46: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

46

CLASE – Ejemplo1

Deseamos construir un tipo de dato que permita almacenar datos de la siguiente forma: ¼, ½, 3/5 , 4/7, etc.

tal tipo de dato podría llamarse Cquebrado

Representación gráfica

CQuebrado

Page 47: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

47

CLASE - CQuebrado

Definición de la clase Cquebrado en Object PascalTYPE

CQuebrado = Classprivate

--------public

-------End;

Definición de la clase Cquebrado en C++

class Cquebrado {

private:

--------

public:

--------

};

Page 48: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

48

Ponedor – Ejemplo1 en C++

void Cquebrado::PonNumerador(unsigned n){ num:=n;}

void Cquebrado::PonDenominador(unsigned d){ den:=d;}

Page 49: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

49

Método Selector

El método selector es una función, cuyo trabajo consiste en devolver el valor guardado en los atributos.

En cada clase se define por lo menos un método selector por cada uno de los atributos de la clase.

Para los nombres de los selectores se utilizan normalmente los prefijos Set u Obt.

Page 50: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

50

Selector – Ejemplo1 en OP

Function Cquebrado.ObtNumerador:word;

Begin

result:=num;

End;

Function Cquebrado.ObtDenominador:word;

Begin

result:=den;

End;

Page 51: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

51

Selector – Ejemplo2 en OP

Function Cvector.ObtDimension:word;Begin result:=dim;End;

Function Cvector.ObtElemento(i:word):integer;Begin result:=elementos[i];End;

Page 52: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

52

Selector – Ejemplo1 en C++

unsigned Cquebrado::ObtNumerador()

{

return num;

}

unsigned Cquebrado::ObtDenominador()

{

return den;

}

Page 53: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

53

Otros métodos

Además de los métodos básicos, las clases pueden proveer de otros métodos para un mejor aprovechamiento.

Estos otros métodos no tienen nombres especiales (constructor, selector, etc), son simplemente métodos.

Page 54: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

54

Otros métodos-Ejemplo1 en OP

Procedure CQuebrado.Simplificar;var x,i:integer;Begin i:=2; REPEAT if ((num MOD i)=0) AND ( (den MOD i)=0) then Begin num:=num DIV i; den:=den DIV i; end else begin i:=i+1; end; x:=Menor(num,den); UNTIL i>(x DIV 2);End;

Page 55: 1 Tema #1 Programación Orientada a Objetos Universidad Autónoma Gabriel René Moreno Elaborado por: Ing. Juan Carlos Contreras Villegas

55

Otros métodos-Ejemplo1 en OP

//funcion que devuelve el valor del quebrado en string

Function Cquebrado.ToStr:string;

Begin

result:=intToStr(num)+’/’+intToStr(den);

End;