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. 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
6
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
7
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
8
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.
9
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.
10
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
11
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.
12
CLASE
13
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.

14
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
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.

17
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).
 Estos valores pueden ser:
– Simples
– O denotar a otro objeto.
 Estado = Atributos = Datos miembro
19
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.
20
ATRIBUTOS – Ejemplo1

Una Fracción está definido por un par de
números naturales, los cuales se
denominan el numerador y denominador.
Fraccion
num_
den
Numerador
Denominador
21
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, 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:
23
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.
24
Tipos de Métodos





Constructores
Destructores
Modificadores
Selectores
Iteradores
25
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
26
Constructor de oficio

Inicializa los atributos con valores
definidos por el implementador de la
clase.
Ej.
Fecha::Fecha()
{ d=1; m=1; a=2001;
}
27
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;
}
28
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);
}
29
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.
30
Modificador

Permite cambiar el estado de un objeto,
modificando los atributos del mismo.
Ej.
Void Fecha::SetDia(byte dd)
{ SetFecha(dd, m, a);
}
31
Selector

Permite devolver el valor de los atributos
sin alterar su estado.
Ej.
byte Fecha::GetDia()
{ return d;
}
32
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.
33
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.
 El constructor es invocado explicitamente
en Object Pascal, e implícitamente en C++.
 Todas las clases definen al menos un
método constructor.
35
Contructor – Ejemplo1

ImplementaciónenImplementación
OP
en C++
Constructor Cquebrado.Create;
Cquebrado::Cquebrado()
Begin
{
num:=1;
num=1;
den:=1;
den =1;
End;
}
Se inicializan los objetos de la clase Cquebrado como la fraccion 1/1
36
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
37
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
Destructor – Ejemplo1-2

Implementación en OP

Implementación en C++
Destructor Cquebrado.Destroy;
Begin
-----End;
Cquebrado::~Cquebrado()
{
------}
Destructor Cvector.Destroy;
Begin
----End;
Cvector::~Cvector()
{
-----}
39
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
Ponedor – Ejemplo1 en OP
Procedure Cquebrado.PonNumerador(n:word);
Begin
num:=n;
End;
Procedure Cquebrado.PonDenominador(d:word);
Begin
den:=d;
End;
41
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
42
CLASE - CQuebrado

Definición de la clase
 Definición de la clase
Cquebrado en Object
Cquebrado en C++
Pascal
TYPE
CQuebrado = Class
private
-------public
------End;
class Cquebrado {
private:
-------public:
-------};
43
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
CLASE - CQuebrado

Definición de la clase
 Definición de la clase
Cquebrado en Object
Cquebrado en C++
Pascal
TYPE
CQuebrado = Class
private
-------public
------End;
class Cquebrado {
private:
-------public:
-------};
45
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
46
CLASE - CQuebrado

Definición de la clase
 Definición de la clase
Cquebrado en Object
Cquebrado en C++
Pascal
TYPE
CQuebrado = Class
private
-------public
------End;
class Cquebrado {
private:
-------public:
-------};
47
Ponedor – Ejemplo1 en C++
void Cquebrado::PonNumerador(unsigned n)
{
num:=n;
}
void Cquebrado::PonDenominador(unsigned d)
{
den:=d;
}
48
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.
49
Selector – Ejemplo1 en OP
Function Cquebrado.ObtNumerador:word;
Begin
result:=num;
End;
Function Cquebrado.ObtDenominador:word;
Begin
result:=den;
End;
50
Selector – Ejemplo2 en OP
Function Cvector.ObtDimension:word;
Begin
result:=dim;
End;
Function Cvector.ObtElemento(i:word):integer;
Begin
result:=elementos[i];
End;
51
Selector – Ejemplo1 en C++
unsigned Cquebrado::ObtNumerador()
{
return num;
}
unsigned Cquebrado::ObtDenominador()
{
return den;
}
52
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.
53
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;
54
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;
55
Descargar

Programación Orientada a Objetos