You are on page 1of 55

Universidad Autónoma

Gabriel René Moreno
Elaborado por: Ing. Juan Carlos Contreras Villegas

Tema #1 Programación Orientada a Objetos

1

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++

2

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.

3

P.O.O. - Lenguajes

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

4

Conceptos

 


 

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

5

Abstracción  Concepto. • Existen dos tipos de abstracciones: abstracción de datos y abstracción funcional 6 . Se define como la capacidad para examinar algo sin preocuparse de sus detalles internos.

lo importante es saber que tipo de información se puede utilizar y no como está almacenado  Que Atributo  Como Campo 7 . es decir.Abstracción de Datos  Consiste en utilizar los datos sin preocuparse por los detalles de su implementación.

 Que  método  Como  algoritmo 8 . pero no nos interesa como lo hará.  Por ejemplo el proceso Ordenar de la clase Vector. pero no como lo hace.Abstracción funcional  Consiste en saber que es lo que hace un determinado proceso. sabemos que el método ordenará los elementos del vector.

9 .Encapsulamiento  Consiste en reunir varias cosas para ser manipuladas como una sola unidad.  Al definir una clase estamos encapsulando los atributos y los métodos.  Por ejemplo al definir variables de tipo Registro estamos encapsulando los campos del registro.

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. 10 . donde el comportamiento de la abstracción se ha realizado.

Ocultamiento  Consiste en no permitir el acceso a los componentes de una clases (atributos.  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 11 . métodos)  Esto se logra con la visibilidad que ofrecen los lenguajes de programación.

En OOP normalmente un módulo contiene la interfaz y la implementación de un o más clases relacionadas.  Un módulo es un archivo que contiene un conjunto de declaraciones y/o procesos. 12 . y se refiere al hecho de realizar un programa por partes. a las cuales se las denomina módulos.Modularidad  Este concepto ya viene desde la programación modular.

CLASE 13 .

CLASE Una clase representa a un conjunto de objetos que comparten una estructura y un comportamiento comunes. por lo que un objeto es en realidad la instancia de una clase.  14 .  La estructura de un objeto se define en su clase.

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” 15 .

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” 16 .

 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.

OBJETO Un objeto tiene: •Un estado •Un comportamiento bien definido •Una identidad única 18 .

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).  Estado = Atributos = Datos miembro 19 .  Estos valores pueden ser: – Simples – O denotar a otro objeto.

Es la abstracción.  Otro concepto: variables que están dentro de los objetos y que contienen los valores del objeto.ATRIBUTOS  Concepto: Características que definen a la clase. es lo que el usuario (de la clase) puede ver. datos miembro.  También son llamados: propiedades. 20 .

ATRIBUTOS – Ejemplo1  Una Fracción está definido por un par de números naturales. Fraccion Numerador Denominador num_ den 21 . los cuales se denominan el numerador y denominador.

ATRIBUTOS – Ejemplo2  Un Fecha está definido por tres datos: día. mes y año. Fecha Día Mes Año 15/ 12/ 2005 22 .

Comportamiento  El comportamiento de un objeto es la forma en que actúa y reacciona.  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: 23 . en términos de sus cambios de estado e intercambio de mensajes con otros objetos.

selectores. 24 .destructores. 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.MÉTODOS     Concepto: Son las operaciones que se pueden realizar con los objetos de la clase. ponedores. estos se clasifican en:Constructores.

Tipos de Métodos      Constructores Destructores Modificadores Selectores Iteradores 25 .

Copia. con Parámetros 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.

a=2001. m=1. Ej. } 27 .Constructor de oficio  Inicializa los atributos con valores definidos por el implementador de la clase. Fecha::Fecha() { d=1.

} 28 .m.Constructor de copia  Inicializa los atributos del objeto con los datos provenientes de otro objeto de la misma clase.d. Fecha::Fecha(const Fecha &f2) { d=f2.a. a=f2. m=f2. Ej.

} 29 .Constructor con parámetros  Inicializa el objeto con datos provenientes de los parámetros. aa).Word aa) { SetFecha(dd. mm. Ej. byte mm. Fecha::Fecha(byte dd.

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.

Modificador  Permite cambiar el estado de un objeto. a). Ej. modificando los atributos del mismo. Void Fecha::SetDia(byte dd) { SetFecha(dd. m. } 31 .

Ej. byte Fecha::GetDia() { return d.Selector  Permite devolver el valor de los atributos sin alterar su estado. } 32 .

Conclusión: hay dos tipos de igualdad: de estado y de identidad. Ej. Ej. Canario *pointer = &piolin. Canario cantarin = piolin.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. piolin != &piolin. Ej. pero no varios objetos con la misma identidad. Puede haber objetos con el mismo estado pero identidades diferentes. 33 . Puede haber varias variables que se refieran al mismo objeto.

Métodos – Ejemplo1-2 Representación gráfica de los métodos de las clases CQuebrado y CVector CQuebrado PonNumerador PonDenominador ObtDenominador ObtNumerador Simplificar CVector PonDimension PonElemento ObtDimension ObtElemento Ordenar 34 .

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.  Todas las clases definen al menos un método constructor.  El constructor es invocado explicitamente en Object Pascal. e implícitamente en C++. 35 .

} Se inicializan los objetos de la clase Cquebrado como la fraccion 1/1 36 .Contructor – Ejemplo1  Implementaciónen OP Implementación en C++ Constructor Cquebrado. End.Create. den:=1. den =1. Cquebrado::Cquebrado() Begin { num:=1. num=1.

End.Create.Constructor – Ejemplo2  Implementación en OP  Constructor Cvector. Implementación en C++ Cvector::Cvector() { dim=0. } Se inicializan los objetos de la clase Cvector como un vector vacio. sin elementos 37 . Begin dim:=0. es decir.

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. 38 .

Destroy. Begin -----End. Cquebrado::~Cquebrado() { ------} Cvector::~Cvector() { -----} 39 . Destructor Cvector. Begin ----End.Destroy.Destructor – Ejemplo1-2  Implementación en OP  Implementación en C++ Destructor Cquebrado.

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 40 .

Procedure Cquebrado. End. Begin num:=n.Ponedor – Ejemplo1 en OP Procedure Cquebrado. End.PonNumerador(n:word). 41 .PonDenominador(d:word). Begin den:=d.

CLASE – Ejemplo1  Deseamos construir un tipo de dato que permita almacenar datos de la siguiente forma: ¼. tal tipo de dato podría llamarse Cquebrado Representación gráfica CQuebrado 42 . etc. 3/5 . 4/7. ½.

class Cquebrado { private: -------public: -------}.CLASE . 43 .CQuebrado  Definición de la clase  Definición de la clase Cquebrado en Object Cquebrado en C++ Pascal TYPE CQuebrado = Class private -------public ------End.

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 44 .

45 .CQuebrado  Definición de la clase  Definición de la clase Cquebrado en Object Cquebrado en C++ Pascal TYPE CQuebrado = Class private -------public ------End.CLASE . class Cquebrado { private: -------public: -------}.

CLASE – Ejemplo1  Deseamos construir un tipo de dato que permita almacenar datos de la siguiente forma: ¼. tal tipo de dato podría llamarse Cquebrado Representación gráfica CQuebrado 46 . 4/7. etc. ½. 3/5 .

CQuebrado  Definición de la clase  Definición de la clase Cquebrado en Object Cquebrado en C++ Pascal TYPE CQuebrado = Class private -------public ------End. 47 . class Cquebrado { private: -------public: -------}.CLASE .

} 48 .Ponedor – Ejemplo1 en C++ void Cquebrado::PonNumerador(unsigned n) { num:=n. } void Cquebrado::PonDenominador(unsigned d) { den:=d.

cuyo trabajo consiste en devolver el valor guardado en los atributos. 49 .  Para los nombres de los selectores se utilizan normalmente los prefijos Set u Obt.Método Selector  El método selector es una función.  En cada clase se define por lo menos un método selector por cada uno de los atributos de la clase.

End. Function Cquebrado.ObtNumerador:word. Begin result:=den.Selector – Ejemplo1 en OP Function Cquebrado. End.ObtDenominador:word. Begin result:=num. 50 .

End. Begin result:=elementos[i].Selector – Ejemplo2 en OP Function Cvector. End. Begin result:=dim.ObtDimension:word.ObtElemento(i:word):integer. 51 . Function Cvector.

Selector – Ejemplo1 en C++ unsigned Cquebrado::ObtNumerador() { return num. } 52 . } unsigned Cquebrado::ObtDenominador() { return den.

etc). son simplemente métodos.Otros métodos  Además de los métodos básicos. selector. las clases pueden proveer de otros métodos para un mejor aprovechamiento. 53 .  Estos otros métodos no tienen nombres especiales (constructor.

x:=Menor(num. End.i:integer. 54 .Otros métodos-Ejemplo1 en OP Procedure CQuebrado. Begin i:=2. end else begin i:=i+1.den). den:=den DIV i. var x.Simplificar. REPEAT if ((num MOD i)=0) AND ( (den MOD i)=0) then Begin num:=num DIV i. end. UNTIL i>(x DIV 2).

Otros métodos-Ejemplo1 en OP //funcion que devuelve el valor del quebrado en string Function Cquebrado.ToStr:string. End. 55 . Begin result:=intToStr(num)+’/’+intToStr(den).