Está en la página 1de 66

Conceptos 

de 
Programación 
Orientada a 
Objetos
M.Sc. Ing. Carlos Ricardo 
Balderrama Vásquez
Objetivos
del
tema

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 2
Objetivos específicos

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 3
competencias

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 4
Competencias especificas

• Comprensión de los fundamentos de la tecnología 
orientada a objetos.

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 5
01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 6
Contenido
de la
materia

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 7
Contenido del TEMA
• Introducción
• Clases
• Objetos
• Métodos  y Atributos 
• Constructores y destructores 
• Herencia 
• Sobrecarga  y Polimorfismo 
• Vinculación dinámica 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 8
bibliografía

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 9
Bibliografía a Emplear
• Fundamentos De 
Programación.  Programacion orientada
Libro De 
Problemas.  a objetos (Luis Joyanes
Algoritmos,  Aguilar)
Estructuras De  McGraw Hill
Datos , Luis  ISBN: 84-481-2015-9
Joyanes Aguilar; 
Luis Rodríguez  Editorial: Mcgraw-Hill
Baena; (McGRAW‐ Interamericana
HILL/INTERAMERIC Clasificación:
ANA DE ESPAÑA,  Computación y Sistemas
S.A.U.) 

 Como  Programación En
Programar en C++. Algoritmos,
Estructura de
C/C++ - H.M. datos, Joyanes
Deitel / P.J. Aguilar Luis,
Deitel - Mcgraw-hill (2006,
Deitel, Deitel, 2ª edición)
Prentice Hall,

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 10
Bibliografía a Emplear
 Programación   Aprender la
orientada a  Programación
objetos con C++,  Orientada a
Javier Ceballos,  Objetos en C#,
Rama, 4Ed, 2015  Luc Gervais, ENI,

 Programación
Orientada a  Programación
Objetos C++, Orientada a
Jacier Ceballos, Objetos, Luis
Rama, 2 Edicion Joyames Aguilar,
MacGrawHill

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 11
Bibliografía a Emplear
 Metodología de   Estructura de
la programación  datos con C++
orientada a  Objetos,
objetos,  abstracciones,
Leobardo López,   Eliot Koffman,
AlfaOmega  Mc Graw Hill

 C++/ OOP un
enfoque  Programación
practico, Ricardo Orientada a
Devis Botella, Objetos, Roberto
Rodríguez
Echeverria,

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 12
Bibliografía a Emplear
 Curso de   Curso de
Programación en  Programación
C++  C++, Miguel Angel
Programación  Acera, Anaya,
2017
Orientada a 
Objetos, Javier 
Ceballos, Rama

 Programación
C++ Curso de  Enciclopedia de
iniciación, Edgar lenguaje de
d’Adrea, programación
InforBooks C++, Javier
Ceballos,
AlfaOmega

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 13
Bibliografía a Emplear
 Programación   Introducción a la
Orientada a  Programación
Objetos, con C++  Orientada a
y Java, José Luis  Objetos Camelia
Muñoz Caro,
López, Patria. Prentice Hall

 Introducción a la
Programación  Programacion
Orientada a Orientada a
Objetos, Olinda Objetos en C++
de Barraza, con MVC,
Pearson Hall Jopsam Sequera,
2018

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 14
Bibliografía a Emplear
 Programación   Fundamentos de
orientada a  Programación,
objetos con C++,  C++, Marcelo
Javier Ceballos,  Villalovos, Macro,
Rama, 5Ed, 2017

 Programación
Orientada a  Turbo C++
Objetos con Manual de
Borland C++, Bolsillo, Luis
Joyanes Aguilar
 , Mc Graw Hill

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 15
Direcciones web

• Repositorio de archivos
• ftp://sisinf.edu.bo/docentes/cbalderrama/sis4710

• Entorno Virtual en el Moodle
• http://moodle.uto.edu.bo:81/moodle/login/index.php

• Correo de consulta
• carlosbalderrama170@gmail.com
• carlos.balderrama@uto.edu.bo
• carlos.balderrama@fni.edu.bo

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 16
Contenido del TEMA
• Introducción
• Clases
• Objetos
• Métodos  y Atributos 
• Constructores y destructores 
• Herencia 
• Sobrecarga  y Polimorfismo 
• Vinculación dinámica 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 17
¿Qué es la Programación
Orientada a Objetos?

• Es una manera de construir Software basada en un 
nuevo paradigma.
• Propone resolver problemas de la realidad a través 
de identificar objetos y relaciones de colaboración 
entre ellos.
• El Objeto y el mensaje son sus elementos 
fundamentales.

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 18
¿Qué es lo que ves?

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 19
¿Qué es lo que ves?

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 20
¿Qué es lo que ves?

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 21
¿Qué es lo que tienen en común?

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 22
¿Qué es lo que tienen en común?

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 23
Contenido del TEMA
• Introducción
• Clases
• Objetos
• Métodos  y Atributos 
• Constructores y destructores 
• Herencia 
• Sobrecarga  y Polimorfismo 
• Vinculación dinámica 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 24
¿Qué es una clase?
• Clase  Clasificación
• Clasificación en base a 
comportamiento y atributos 
comunes
• Crea un vocabulario
• La forma en que nos 
comunicamos
• La forma en que pensamos

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 25
¿Qué es una clase?
• Construcción Estática
• Describe:
• Comportamiento común
• Atributos [estado]
• Estructura de datos
• Incluye:
• Datos
• Funciones o métodos

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 26
<Nombre objeto>
alumno
<atributos>
Nombre,app,apm, edad, 
peso,est_civ
Cel,dir,fech_nac ……
<metodos>
Inicializar, destruir, 
ejecutar,
Cumple_anios, jugarDota, 
obt_nom, fichIns, profe
…….

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 27
Clase
• Una clase es una colección de 
información relacionada que 
incluye datos y funciones (las 
instrucciones por trabajar con 
esos datos, también 
conocidos como métodos).

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 28
• #include<iostream.h>
• class Persona{
<Nombre objeto> • protected:
• int edad;
persona • char nombre;
• public:
• int casa;
<atributos> • private:
• float peso;
Nombre, edad, peso, casa,  • void init(void);
• void run(void);
… • void done(void);
• void cumpleanios(void);
• }Jose;
• void Persona::init(void)

<metodos> •
{
edad=5;
Inicializar, destruir,  • }
• void Persona::run(void)
ejecutar, • {
• cout << edad;
Cumple_anios,  ……. • }
• void Persona::done(void)
• {
• edad=0;
• }
• void Persona::cumpleanios(void)
• {
• edad++;
• }

• main()
• {
• Jose.init();
• Jose.run();
• Jose.cumpleanios();
• Juse.run();
• Jose.done();
• }

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 29
Contenido del TEMA
• Introducción
• Clases
• Objetos
• Métodos  y Atributos 
• Constructores y destructores 
• Tipos de datos parametrizados 
• Herencia 
• Sobrecarga  y Polimorfismo 
• Vinculación dinámica 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 30
¿Qué es un objeto?

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 31
¿Qué es un objeto?
• Instancia de una clase
• Un objeto posee:
• Identidad: Relación única entre el 
objeto del modelo y el ente de la 
realidad que representa. Se 
implementa a través de un id 
único en el modelo.
• Comportamiento: Resuelve un 
conjunto particular de problemas 
a través de su protocolo.
• Estado: Almacena información
• Fija
• Variable

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 32
Objetos
• Un objeto es una 
instancia de una clase 
que contiene los datos y 
codifica todos en un 
paquete. Antes de OOP, 
se trataron código y datos 
como elementos 
separados. Un objeto es 
una instancia específica 
de una clase. 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 33
Contenido del TEMA
• Introducción
• Clases
• Objetos
• Métodos  y Atributos 
• Constructores y destructores 
• Herencia 
• Sobrecarga  y Polimorfismo 
• Vinculación dinámica 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 34
Partes públicas, privadas
y protegidas
• Los miembros de datos de 
un objeto sólo deben ser 
manipulados por los 
métodos del propio objeto. 
Los miembros de una clase 
por defecto son todos 
privados, lo que significa 
que no es posible acceder a 
ellos desde fuera del código 
de la propia clase.
Las declaraciones realizadas 
en la definición de una 
clase pueden agruparse en 
tres apartados: public, 
private y protected. 
01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 35
Partes públicas, privadas y
protegidas
• Las declaraciones en el apartado public
serán publicas y por lo tanto otros 
programas o módulos podrán acceder a 
esos miembros. En el apartado private
podemos incluir la declaración de todos 
aquellos miembros que no deseamos 
poner a disposición de terceros. Todas las 
variables y métodos que incluyamos en 
esta parte serán accesibles solo desde el 
propio objeto, es decir desde los 
métodos del objeto. 
• Por ultimo tenemos el apartado 
protected, que da paso a la parte 
protegida del objeto, que es un paso 
intermedio de las dos anteriores. Los 
identificadores creados en la parte 
protegida no serán accesibles desde 
otros programas o módulos, pero si 
tendrán acceso a ellos aquellos objetos 
que sean derivados del nuestro.

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 36
Métodos que interactúan con el
medio ambiente son los que permiten
interactuar con el contenido de las variables

Variables
Init() atributos que
Mostrar()
tiene el objeto

Run() Leer()
Done()

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 37
<Nombre objeto>
celular

<atributos>
Wifi, bloethoo, radio, aplic, camara, pila, 
linterna, antena
numero

<metodos>
Encender, apagar, llamar, watsapear, 
facebokear, saca_foto

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 38
M.Sc. Ing. Carlos Balderrama Vásquez
Pilares de POO

Herencia Polimorfismo Encapsulamiento

Abstracción

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 39
Abstracción
• Ignorancia selectiva
• Decide que es 
importante y que no lo 
es
• Se enfoca [depende] en 
lo que es importante
• Ignora [no depende] de 
lo que no es importante
• Utiliza la encapsulación 
para reforzar la 
abstracción
01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 40
Encapsulamiento

Acelera()

velocidad

Frena()

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 41
Encapsulación
• Los datos que se declaren en el 
interior del Objeto sólo serán 
manipulados por los métodos de 
ese objeto. A esto se lo conoce 
como encapsulación, ya que en 
cierta forma aísla a los datos y 
métodos de un objeto como si se 
tratase de una cápsula, 
impidiendo así que sean usados 
unos parámetros erróneos al 
llamar a un método o que una 
determinada función manipule la 
variable que no es. En otras 
palabras la encapsulación es la 
característica OOP que permite 
asociar código y datos formando 
objetos autosuficientes.
01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 42
Encapsulamiento

 Los métodos
Acelera() son públicos:
son accesibles
velocidad desde fuera
 Los datos son
privados:
Frena()
accesibles
desde dentro

Controlador del Motor

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 43
Datos del Objeto
• Describe los objetos de forma individual
 Color: Azul
 Color 2: Gris
 Instrumental Digital
 Ventanas eléctricas
 4 asientos

 Color: Verde
 Color 2: Negro
 Instrumental digital
 2 asientos

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 44
Datos Estáticos
• Describen información para todos los objetos

 Número de llantas: 4
 Capacidad del tanque: 40
litros
 Tipo de Transmisión:
Automática

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 45
Métodos Estáticos
• Solo pueden acceder a datos 
compartidos por todas las 
instancias de la clase.
• Encapsula los datos estáticos
• Son invocados en la clase, no en 
el objeto
• No es necesaria la creación de 
una instancia para invocarlos

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 46
Métodos Estáticos

llantas
tanque
transmision

NumeroLlantas()
CapacidadTanque()
TipoTransmision()

Automóvil

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 47
Contenido del TEMA
• Introducción
• Clases
• Objetos
• Métodos  y Atributos 
• Constructores y destructores 
• Herencia 
• Sobrecarga  y Polimorfismo 
• Vinculación dinámica 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 48
Constructor y Destructor
• Dos métodos de las clases
• Existen por defecto
• Constructor, inicializa 
valores
• Destructor, libera recursos 
al finalizar la vida de una 
instancia de una clase 
creada en memoria
• Existen constructores y 
destructores por defecto

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 49
Constructor y Destructor
• Con el fin de facilitar los procesos de 
inicialización y destrucción de objetos 
C++ dispone de métodos denominados 
constructores y destructores. 
• Los constructores de una clase, pueden 
existir varios, son métodos cuyo nombre 
coincide con el nombre de la clase y se 
caracterizan por no tener tipo de 
retorno, ni siquiera void. 
• El destructor, tan solo puede existir uno, 
es un método que al igual que el 
constructor tiene el nombre de la clase a 
la que pertenece, aunque en este caso 
precedido por una tilde. 
• Un destructor no toma ni devuelve 
parámetros.
01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 50
Constructor y Destructor
• El constructor en cierta forma 
será el encargado de construir el 
objeto asignando la memoria 
necesaria y dándoles valores 
iniciales a los distintos miembros. 
• Al declarar un objeto de la clase 
se llamará automáticamente al 
constructor adecuado, según los 
parámetros que se hayan 
facilitado. 
• El destructor se ejecuta 
automáticamente cuando se 
libera en forma explícitamente en 
caso de haber sido creado 
dinámicamente o cuando la 
variable declarada sale de su 
ámbito.

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 51
Contenido del TEMA
• Introducción
• Clases
• Objetos
• Métodos  y Atributos 
• Constructores y destructores 
• Herencia
• Sobrecarga  y Polimorfismo 
• Vinculación dinámica 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 52
Herencia
• Otra característica de OOP es la 
herencia, que es la reutilización de 
código.
• A la acción de crear una clase de 
objeto a partir de otra clase ya 
existente se le llama derivación. 
• Al tipo original se le conoce como 
tipo base o ascendiente, mientras 
que al nuevo tipo, que hereda las 
características del anterior se le llama 
tipo derivado o descendiente,
• Al crear una instancia de la clase 
derivada se ejecuta automáticamente 
el constructor de la clase base. Lo 
mismo ocurre con el destructor. 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 53
Herencia
• Es “un tipo de” relación
• Relación “es un”
• Entre Clases Transporte

• Va de la generalización a la  Acelera

especialización Frena

• Clase base
Automóvil
• Clase derivada
• Hereda la implementación

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 54
Jerarquías de Clase
Transporte

Marítimo Aire Nieve Tierra

DentroAtmosfera FueraAtmosfera 1-Persona N-Personas

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 55
Jerarquías de Clase – Otro ejemplo

Cuentas

Cuenta Corriente Caja Ahorro

Común Sueldo

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 56
Herencia Múltiple
• Singular: La clase hija deriva de una única 
clase padre
• Múltiple: La clase hija deriva de varias clases 
padre
• No es soportada por todos los lenguajes
• Puede ser confusa

Nieve 1-Persona Terrestre

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 57
Contenido del TEMA
• Introducción
• Clases
• Objetos
• Métodos  y Atributos 
• Constructores y destructores 
• Herencia 
• Sobrecarga  y Polimorfismo 
• Vinculación dinámica 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 58
Polimorfismo y sobrecarga
• Polimorfismo: desconocimiento del cliente 
sobre la clase concreta del objeto que brinda 
el servicio. Esto me da libertad de 
intercambiar libremente el objeto servidor.
• Sobrecarga: Definir más de un método por 
cada mensaje, los tipos de los argumentos 
ayudan a decidir a qué mensaje se invoca.
• Tareas similares son realizadas por métodos 
con mismo nombre
• Suma
• Enteros
• Decimales
• Fracciones
• Simplifican la tarea del desarrollador, al no 
tener que recordar distintos nombres para 
comportamientos iguales.

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 59
Polimorfismo
• La definición del método reside en la clase base
• La implementación del método reside en la clase derivada
• La invocación es resuelta al momento de ejecución
• Early binding
• Late binding

Auto
Acelera
Frena

Cohete
Transporte Acelera
Acelera Frena
Frena

Caballo
Acelera
Frena
01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 60
Polimorfísmo
• Un método virtual se utiliza cuando 
una clase base posee un método que 
debe tener un comportamiento 
diferente en clases derivadas. Siempre 
que una clase derivada no contenga la 
lógica deseada presente en la clase 
base, basta implementar una nueva 
lógica para la misma, a través de un 
método o función virtual.
La idea de métodos virtuales se basa 
en tener un nombre para cierta acción 
en una clase base, y usarlo de manera 
diferente en clases derivadas. Cada 
clase derivada va a ejecutar la acción 
del método virtual a su propio modo, 
acorde con sus necesidades.
01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 61
El Objeto this
• Cuando se llama a un 
método, éste puede 
acceder a los miembros 
de datos del objeto que se 
ha utilizado para realizar 
la llamada. 
• El objeto this representa 
al objeto que ha llamado a 
un método y puede ser 
usado como cualquier 
otra referencia la objeto.

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 62
Conceptos POO

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 63
Contenido del TEMA
• Introducción
• Clases
• Objetos
• Métodos  y Atributos 
• Constructores y destructores 
• Herencia 
• Sobrecarga  y Polimorfismo 
• Vinculación dinámica 

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 64
Punteros

01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 65
M.Sc. Ing. Carlos Ricardo Balderrama 
Vásquez

También podría gustarte