Sunteți pe pagina 1din 59

INTRODUCCIÓN A LA PROGRAMACIÓN

Académico: Mtra. Alessandra Reyes ialessandra.reyes@gmail.com


Periodo: Agosto 2017- Enero 2018
UNIDAD III:
Programación Orientada a Objetos (POO)
Unidad III: Programación Orientada a Objetos (POO)
• Características de la POO
• Conceptos básicos de POO y notación
• Objeto y sus componentes, atributos, métodos e identidad
• Clase
• Modelado
• Implementación de un Programa OO
• Abstracción y encapsulamiento.
• Tipos de acceso: prívate, public, protected
• Instancias a objetos
• Constructores
• Estado de un objeto
• Sobrecarga de métodos
• Comunicación entre objetos

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 3


Programación
Orientada a Objetos
(POO)
Programación orientada a objetos (POO)

Paradigma de programación que usa los


objetos en sus interacciones, para diseñar
aplicaciones y programas informáticos.

• Es un modelo de programación más cercado a


como expresaríamos las cosas en la vida real.
• No es un lenguaje específico, sino una
forma de programar.
• Es una de las formas más populares.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 5


Programación orientada a objetos (POO)
Es una forma de desarrollar un sistema, pensando en las
entidades principales del problema que se pretende resolver…

“ Las cosas se piensan de manera


distinta ”
Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 6
Programación orientada a objetos (POO)

Cuando miramos a nuestro


alrededor

¿qué vemos?

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 7


Programación orientada a objetos (POO)
Vemos objetos…
• Podemos reconocer estos objetos porque cada objeto pertenece a
una clase.
• P. ej., distinguimos un perro de un auto (son de clases diferentes), o
una TV de otra (porque, aunque sean iguales, cada uno es un objeto
distinto).

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 8


Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 9
Programación orientada a objetos (POO)

Se busca identificar las entidades


involucradas en un problema…

Específicamente las características de éstas


y las acciones que realizan, o bien que
producen algún efecto sobre ellos.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 10


Programación orientada a objetos (POO)

El propósito de la POO no tiene que ver con el


lenguaje de programación…

El lenguaje de programación es la herramienta


para resolver el problema…
Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 11
Características de la POO

1. Utiliza objetos, no algorítmicos, como bloques de construcción lógicos


(jerarquía de objetos).
2. Cada objeto es una instancia de una clase
3. Las clases se relacionan unas con otras por medio de relaciones de
herencia.

Los conceptos fundamentales de POO son: objetos, clases, herencia,


mensajes, y polimorfismo.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 12


Un OBJETO
es cualquier cosa…
Objeto
El principio básico de la POO es que un sistema de software se ve como
secuencia de “transformaciones” en un conjunto de objetos.

• El término objeto es una persona,


un lugar o una cosa.
• Ejemplos: persona, tabla,
computadora, avión, vuelo de
avión, ciudad, etc.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 14


Objeto

Entidad que contiene los atributos que describen el estado


de un objeto del mundo real y las acciones que se asocian
con éste. Se designa con un nombre o identificador del
objeto.

Cada objeto tiene atributos y métodos.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 15


Objeto
Atributos Métodos

Datos o variables que Procedimientos o


caracterizan el estado de funciones que cambian el
un objeto. estado de un objeto.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 16


Objeto Automóvil

Atributos: Métodos:
Color Encender
Modelo Apagar
Marca Acelerar
Placas Frenar
Estado

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 17


CLASE
Clase
Normalmente, en el mundo real existen varios objetos de un mismo tipo, o
misma clase. P. ej., los siguientes automóviles pertenecen a una misma clase.

Automóvil
Color
Modelo
Marca Color: Rojo Color: Azul Color: Amarillo
Placas Modelo: 1995 Modelo: 2000 Modelo: 1998
Puertas Marca: Volkswagen Marca: Volkswagen Marca: Volkswagen
Encender ( ) Placas: JYK609 Placas: MAH898 Placas: PHG748
Puertas: 2 Puertas: 2 Puertas: 2
Apagar ( )
Acelerar ( ) Objeto1 Objeto2 Objeto3

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 19


Clase

Es la descripción de un conjunto de objetos: consta de


métodos y datos que resumen características comunes de
un conjunto de objetos.

• Una clase es la declaración de un tipo de objeto.


• Son similares a los tipos de datos y equivales a modelos
o plantillas que describen cómo se construyen ciertos
objetos.
Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 20
Clase

Cada vez que se construye un objeto a partir de una


clase, estamos creando lo que se llama una instancia de
esa clase.

“ ”
Un objeto es una instancia de una clase.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 21


Clase
Supongamos una clase Punto que consta de los campos o
atributos (coordenadas x e y), y los métodos (leer dichas
coordenadas x e y)

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 22


Modelado de clases
Diagrama de clases

El diagrama de clase es una representación semi-gráfica


de la clase, que ayuda al programador a visualizar cuáles
son los atributos y métodos que contendrá una clase.

• También se pueden representar relaciones entre clases.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 24


Diagrama de clases
En UML (Lenguaje unificado de modelado) una clase es representada por un
rectángulo que posee tres divisiones:
Médico
- Nombre : char
< Nombre Clase > - ApPaterno: char
- ApMaterno: char
- Telefono: int
< Atributos > - NoCedula: int
P.ej.: - Calle: char
-Colonia: char
<Operaciones o métodos > - Ciudad: char
+ AltaMedico(): void
+ BajaMedico(): void
+ Consulta(): void

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 25


Actividad extra clase
1. Modelar las siguientes clases:
• Persona
• Estudiante
• Profesor
• Casa
• Lámpara
2. Identificar los objetos del siguiente problema y modelar la clase que le corresponde a cada
objeto.
En un hospital requieren llevar el control de medicamentos que se le asigna a cada paciente y quiénes
son los enfermeros que lo administran. Además, quieren conocer el número de visitas que acuden en
promedio por cada departamento del hospital, y de qué edad son.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 26


Abstracción y
Encapsulamiento
Abstracción

Describir una entidad del mundo real, identificando sus


atributos y métodos esenciales.

• Permite representar las características esenciales de un


objeto sin preocuparse de las restantes características.

• Una clase se puede definir como una descripción


abstracta de un grupo de objetos.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 28


¿Qué es un encapsular?

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 29


Encapsulamiento

Propiedad que permite asegurar que el contenido de la


información de un objeto está oculta del mundo exterior.

• El objeto A no conoce lo que hace el objeto B, y


viceversa.

• También se conoce como ocultación de la información


para que el valor de sus atributos sólo se puedan
cambiar mediante operaciones definidas para ese objeto.
Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 30
Encapsulamiento

Lo anterior significa que cada clase, debe tener dos


partes: una interfaz y una implementación.

• La interfaz de una clase captura sólo su vista externa.

• La implementación contiene la representación de la


abstracción, así como los mecanismos que realizan el
comportamiento deseado.
Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 31
Encapsulamiento (tipos de acceso)
La encapsulación define 3 tipos (niveles) de acceso para los
elementos de esa clase.

• Púbico: Nivel de protección de datos más bajo. Los métodos definidos


en otras clases pueden acceder a los atributos o métodos de una clase
que se define con este nivel.

• Protegido: Sólo pueden acceder a los datos de una clase los métodos
definidos en esa clase y en las clases que se derivan de ésta.

• Privado: Nivel de protección más alto. Sólo pueden acceder a sus datos
los métodos de esa clase en particular.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 32


Práctica
1. Definir la clase persona en C++, declarando sus propiedades y métodos.
2. Declarar un objeto de una clase y manipularlo mediante llamadas a sus
métodos.

3. Por su cuenta, deben definir las clases estudiante, profesor y lámpara en


C++.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 33


Estado de un objeto

El estado de un objeto se refiere al conjunto de atributos y valores


en un instante de tiempo dado

• El comportamiento de un objeto puede modificar el estado de


éste.
• Incluso un objeto puede modificar el estado de otros objetos.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 34


Constructores
Los objetos comúnmente son creados o destruidos por otros
objetos. Dos operaciones comunes típicas en cualquier clase son:

• Constructor: Una operación que crea un objeto y/o inicializa su estado.

• Destructor: una operación que libera el estado de un objeto y/o


destruye el propio objeto.

• En C++ los constructores y destructores se declaran como parte


de la definición de una clase.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 35


Constructores
Debemos tener en cuenta ciertas cosas a la hora de crear un
constructor:
• Tienen el mismo nombre que la clase a la que pertenecen.

• No tienen tipo de retorno, y por lo tanto no retornan ningún valor (ni siquiera
“void”).

• No pueden ser heredados.

• Deben ser públicos (ya que se usan desde el exterior de la clase).

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 36


Práctica
1. A la clase Estudiante, que han creado como tarea anteriormente, debes agregarle su constructor y
crear 3 objetos de la clase Estudiante, utilizando el constructor definido.
Para apoyarte ve el siguiente video: 127. Programación en C++ || POO || Clases y objetos en C++:
https://youtu.be/tbVHbfIVxs4

2. A la clase Lámpara, que han creado como tarea anteriormente, debes agregarle su constructor y
crear 3 objetos de la clase Lámpara, utilizando el constructor definido.

3. Crear una clase llamada Rectángulo que tenga los siguientes atributos: largo, ancho, color, y los
siguientes métodos: perimetro() y area(). Deben crear dos objetos utilizando el constructor.

4. Ver el siguiente video acerca de sobrecarga de métodos. Éste explica particularmente sobre la
sobrecarga de constructores: https://youtu.be/dn3E4QlTevo

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 37


Sobrecarga de métodos
Posibilidad de tener dos o más métodos con el mismo nombre
pero con funcionalidad diferente.

• Dos o más funciones tienen el mismo nombre pero realizan acciones diferentes.

• Lo que hace la diferencia son los parámetros.

• El compilador usará uno u otro dependiendo de los parámetros usados.

• Se produce un error si los métodos tienen definidos los mismos parámetros.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 38


Práctica
1. A la clase Estudiante, que han creado como tarea anteriormente, agregarle
otro constructor y crear 2 objetos de la clase Estudiante, utilizando el
constructor definido.

*Un constructor debe recibir todo el nombre completo, y el segundo constructor


debe recibir el nombre separado por nombre, apellidoPaterno y
apellidoMaterno.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 39


Comunicación entre objetos
• Los objetos realizan acciones cuando ellos reciben mensajes.

Un mensaje es una orden que se envía a un objeto para indicarle


que realice alguna acción.

• La técnica de enviar mensajes a objetos se denomina pasar mensajes.

• Los objetos se comunican entre sí enviando mensajes, al igual que sucede con las
personas.

• Los métodos son las acciones que se invocan cuando un objeto recibe un mensaje
(llamada a una función).

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 40


Comunicación entre objetos
• Por ejemplo: al objeto Perro le enviamos el mensaje:
Caminar 5 pasos.

• No le indicamos al perro cómo caminar, el perro maneja la operación por sí


mismo.

• De hecho, se puede enviar el mismo mensaje a diferentes objetos y c/u


sabrá cómo realizar la acción.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 41


Comunicación entre objetos
• Los mensajes pueden venir de otros objetos o desde fuentes externas,
tales como un mouse o un teclado.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 42


Comunicación entre objetos
• El objeto que envía la petición se denomina emisor y el objeto que recibe la
petición se denomina receptor.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 43


Comunicación entre objetos
• Un mensaje consta de tres partes:

1. Identidad del receptor

2. El método que se ha de ejecutar

3. Información especial necesaria


para realizar el método invocado
(argumentos o parámetros
requeridos)

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 44


Comunicación entre objetos
• Cuando un objeto está inactivo
(durmiendo) y recibe un mensaje, se
hace activo.

• El conjunto de mensajes a los que


responde un objeto se denomina
comportamiento del objeto.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 45


Comunicación entre objetos
• Cuando un objeto recibe un mensaje, se realiza la operación solicitada
ejecutando un método.

• Un método es el algoritmo ejecutado en respuesta a la recepción de un


mensaje, cuyo nombre corresponde al nombre del método.

El receptor responde a un mensaje.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 46


Comunicación entre objetos
• Un objeto receptor que ha de recibir el mensaje trata de encontrar el
nombre del mensaje con los mensajes que él entiende.

• Los parámetros o argumentos pueden ser:


• Datos utilizados por el método invocado
• Un mensaje, propiamente dicho

objetoA.metodo1(parámetro 1, parámetro n)

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 47


Comunicación entre objetos

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 48


Herencia
• Además de la abstracción y el encapsulamiento, la orientación a objetos se
caracteriza por incorporar la característica de herencia.

• Propiedad que permite a los objetos ser construidos a partir de otros


objetos.

• El objetivo final es la reutilización de código anteriormente ya desarrollado.

Una clase hereda sus características (atributos y métodos) de otra


clase.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 49


Herencia

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 50


Herencia

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 51


Herencia

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 52


Herencia
• En C++ la propiedad de herencia se implementa con la siguiente sintaxis:

class nombredeclasederivada : tipoacceso nombredeclasebase

atributos propios

métodos propios

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 53


Herencia
• Por ejemplo en C++ se crea una
• Luego se declara su clase derivada:
clase llamada base:
class derivada : public base {
class base {

private: private:

int x , y; int z;

public: public:
void hacerAlgo( ); void hacerOtraCosa( );
}
}

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 54


Tipos de Herencia
• Existen dos mecanismos de herencia:
• Herencia simple: una clase puede tener sólo un ascendiente (sólo puede adquirir atributos
y métodos de una única clase)

• Herencia múltiple: una clase puede tener más de un ascendiente (adquirir atributos y
métodos de más de una clase)

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 55


Práctica
1. Realizar un programa en C++, de tal manera que se construya
una solución para la jerarquía (herencia) de clases mostrada en
la siguiente figura.

Persona

Estudiante Profesor

Tutorado

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 56


Polimorfismo
• Permite desarrollar sistemas en los que objetos diferentes puedan
responder de modo diferente al mismo mensaje.

• Un mismo mensaje puede producir acciones (resultados) totalmente


diferentes cuando se reciben por objetos diferentes.

• El polimorfismo se fortalece con el mecanismo de herencia.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 57


Polimorfismo
void conducir ( ){
//Mover volante
Vehículo //Acelerar
// Frenar
}

Automóvil Motocicleta Autobús


void conducir ( ){ void conducir ( ){
//Mover volante //Mover manubrio
//Acelerar (utiliza clutch y acelerador) //Acelerar (utiliza acelerador con mano)
// Frenar (freno con pie o freno de mano) // Frenar (freno con mano)
} }

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 58


Referencias
1. Aguilar, J., & Aguilar, L. J. (1996). Programación orientada a objetos (No.
004.652. 5). McGraw-Hill Interamericana,.

Introducción a la programación Tecnologías Computacionales – Universidad Veracruzana 59

S-ar putea să vă placă și