Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
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
01/09/2020 M.Sc. Ing. Carlos Balderrama Vásquez 55
Jerarquías de Clase – Otro ejemplo
Cuentas
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
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