2. INTRODUCCIÓN
• La POO (o OOP de sus siglas en inglés)
no es un lenguaje de programación,
sino un paradigma y puede aplicarse a
cualquier lenguaje.
• Hoy en día está disponible en mayor o
menor medida en todos los lenguajes
tradicionales (C se ha convertido en C++,
Pascal en Delphi, VB 6.0 incorporaba
parte de la POO y actualemnte VB.NET se
encuentra enteramente orientado a
objetos
3. PARADIGMAS DE PROGRAMACIÓN
• “Un paradigma de programación indica
un método de realizar cómputos y la
manera en que se deben estructurar y
organizar las tareas que debe llevar a
cabo un programa ”
• se asocian a un determinado estilo de
programación.
• Los lenguajes de programación suelen
implementar, a menudo de forma parcial,
varios paradigmas.
4. PARADIGMA IMPERATIVO
• Describe cómo debe realizarse el cálculo, no el
porqué.
• Un cómputo consiste en una serie de
sentencias, ejecutadas según un control de flujo
explícito, que modifican el estado del
programa.
• Las variables son celdas de memoria que
contienen datos (o referencias), pueden ser
modificadas, y representan el estado del
programa.
• La sentencia principal es la asignación.
5. PARADIGMA IMPERATIVO
Programación lineal
• Cada línea de programa debe ir precedida de un
identificador (una etiqueta) para poder
referenciarla, para este ejemplo hemos utilizado
números, aunque podría utilizarse cualquier otro
identificador.
6. PARADIGMA IMPERATIVO
Programación estructurada
• Se busca que el programador elabore programas
sencillos y fáciles de entender.
• Para ello, la PE hace uso de tres estructuras básicas
de control:
– Estructura Secuencial
– Estructura Selectiva
– Estructura Repetitiva (ó Iterativa)
• Existe un teorema fundamental, el cual afirma que
cualquier programa, puede ser elaborado utilizando
únicamente las tres estructuras básicas (secuencia,
selección, iteración).
8. PARADIGMA DECLARATIVO
• Describe que se debe cálcular, sin
explicitar el cómo.
• No existe un orden de evaluación
prefijado.
• No existe sentencia de asignación.
• Ejemplo prolog, Maude, SQL
9. PARADIGMA ORIENTACIÓN A OBJETOS
• Ofrece mayor dominio sobre el programa
liberándonos aún más de su control.
• Hasta ahora, el control del programa era
tarea del programador, quien tenía que
controlar y mantener en su mente cada
proceso que se realizaba y los efectos
colaterales que pudieran surgir entre
distintos procesos, lo que llamamos
colisiones.
10. PARADIGMA ORIENTACIÓN A OBJETOS
• En POO, el programa se controla a sí
mismo y la mente del programador se
libera enormemente pudiendo realizar
aplicaciones mucho más complejas al
exigir menor esfuerzo de atención, ya que
los objetos son entidades autónomas que
se controlan a sí mismos.
• Los objetos nos impiden mezclar sus
datos con otros métodos distintos a los
suyos.
11. ¿QUÉ NO ES LA POO?
No es un sistema de comunicación con los
programas basados en ratones, ventanas,
iconos, etc.
• Puesto que, normalmente, los lenguajes
de POO suelen presentar estas
características y habitualmente estos
entornos suelen desarrollarse con estas
técnicas, algunas personas tienden a
identificar la POO a entornos de este tipo.
12. ¿QUÉ NO ES LA POO?
• No es un un lenguaje.
• De hecho las técnicas de POO
pueden utilizarse en cualquier
lenguaje conocido.
13. PROGRAMACIÓN ORIENTADA AL
OBJETO
• La POO, agrupa un conjunto de técnicas
que nos permiten desarrollar y mantener
mucho más fácilmente programas de una
gran complejidad.
• Concéptos fundamentales:
– Clase
– Objeto
– Encapsulación
– Herencia
– Polimorfismo
14. DEFINICIÓN DE CLASE
• Es una abstracción que hacemos de nuestra
experiencia sensible. El ser humano tiende a
agrupar seres o cosas (objetos) con
características similares en grupos (clases).
• Por ejemplo podemos reconocer un vaso en
cuanto lo vemos, aún cuando sean muchos
diferentes e incluso aun cuando ese modelo
concreto de vaso, no lo hayamos visto
nunca.
• El concepto de vaso es una abstracción de
nuestra experiencia sensible.
15. DEFINICIÓN DE CLASE
Como vemos, el ser humano tiende, de un modo
natural a clasificar los objetos del mundo que le
rodean en clases; son definiciones estructuralistas
de la naturaleza.
16. DEFINICIÓN DE CLASE
• Una clase puede tener
distintas características.
• En el caso del vaso
puede tener una
determinada forma, color,
material o un dibujo que
lo diferencie de otro.
• A estas características
llamaremos atributos.
17. DEFINICIÓN DE OBJETO
Según RAE:
1. m. Todo lo que puede ser materia de
conocimiento o sensibilidad de parte del sujeto,
incluso este mismo.
2. m. Cosa
Para POO:
Es un conjunto de datos y métodos
18. DEFINICIÓN DE OBJETO
• Los datos (o propiedades) son lo que
antes hemos llamado características o
atributos, los métodos son los
comportamientos que pueden realizar.
• Lo importante de un sistema POO es que
ambos, datos y métodos están tan
intrínsecamente ligados, que forman una
misma unidad conceptual y operacional.
• En POO, no se pueden desligar los datos
de los métodos de un objeto.
20. DEFINICIÓN DE ENCAPSULACIÓN
• Una clase debe ser una estructura
cerrada, no se debe poder acceder a ella
si no es a través de los métodos definidos
para ella.
• Por lo tanto todos los datos de una clase
son privados y se accede a ellos
mediante métodos públicos.
• Cada dato o atributo de una clase deberá
tener un método accesor y/u otro
modificador.
21. DEFINICIÓN DE ENCAPSULACIÓN
• Siguendo con el ejemplo de un auto
(observándolo como objeto), actualmente
es posible saber el estado general del
mismo con solo ver un tablero.
• Si el auto tiene temperatura, habrá un
“método” llamado termómetro que nos lo
indica. De otra forma tendríamos que
acceder al motor y comprobarlo
manualmente.
22. ENCAPSULACIÓN EN VB.NET
• En VB.NET podemos y debemos aplicar
el concépto de encapsulación de la
siguiente forma.
• Definir atributos:
– Private _marca As String
– Private _color As String
23. ENCAPSULACIÓN EN VB.NET
• Para los métodos accesores y
modificadores debemos definir las
propiedades de la clase mediante la
intrucción Property.
• La instrucción Property genera un método
accesor Get y un método modificador Set.
• Por defecto una instrucción Property
contiene un Get y un Set, pero es posible
utilizar sólo uno de los dos.
25. ENCAPSULACIÓN EN VB.NET
• Al momento de establecer un valor a una
propiedad y de obtenerlo, se hace de la
misma forma que si fuera un atributo, solo
que ahora estaremos accediendo a la
propiedad (ya que el atributo se encuentra
oculto)
27. Dos aspectos de la encapsulación
• Existen dos aspectos a tener en cuenta en
la encapsulación.
– El primero ya lo vimos y es referido a las
propiedades simples que pueda tener un
objeto, que son de tipo de datos conocidos
(Integer, Double, String, Boolean, etc) las
cuales deben ser privadas y solo se accede a
ellas mediante métodos accesores y
modificadores.
28. Dos aspectos de la encapsulación
– El segundo es cuando un objeto se relaciona con
otro, y de alguna forma debemos establecer una
relación entre un objeto y otro.
– En el ejemplo vemos al objeto Empresa y al objeto
Empleado.
– Sabemos que Empresa tiene RazonSocial,
Direccion, RUT y además tiene un Trabajador que es
un Empleado.
Empresa
+RazonSocial: String
+Direccion: String
+RUT: Long
+Trabajador: Empleado
Empleado
+Cedula: Long
+Nombre: String
+FechaNacimiento: Date
+Telefono: String
+Direccion: String
29. Encapsulación: relación entre objetos
• En ningún momento la Empresa debe conocer
propiedades que son propios del empleado, como por
ejemplo su cédula.
• Porque además de estar duplicando datos, estaríamos
incumpliendo el concepto de objeto donde dice que
cada objeto debe tener sólo sus propios métodos.
Empresa
+RazonSocial: String
+Direccion: String
+RUT: Long
+CedulaTrabajador: Long
Empleado
+Cedula: Long
+Nombre: String
+FechaNacimiento: Date
+Telefono: String
+Direccion: String
30. Encapsulación: relación entre objetos
• Por lo tanto, siguiendo con el ejemplo, la
Empresa sólo sabe quien es su empleado, pero
nada más. Si desea conocer algún dato del
mismo, debe «preguntar» a su empleado y el
con gusto le brindará todos los datos que
necesite. Empresa
+RazonSocial: String
+Direccion: String
+RUT: Long
+Trabajador: Empleado
Empleado
+Cedula: Long
+Nombre: String
+FechaNacimiento: Date
+Telefono: String
+Direccion: String
Dim cedulaEmp = Empresa.Trabajador.Cedula
31. CONSTRUCTORES
• Para poder utilizar un objeto, previamente
hemos de crearlo; esto es lo que hacemos
mediante el constructor de la clase.
• Para esto se utiliza un operador especial
proporcionado por el lenguaje de
programación que normalmente se llama
‘New’.
• El constructor o los constructores son
notados de una forma especial:
• En VB.NET:
32. CONSTRUCTORES
• Así, para crear un objeto de la clase
Persona, llamado Juan, escribiremos lo
siguiente:
Dim Juan As Persona
Juan = New Persona()
• Le estamos diciendo al método
constructor que nos devuelva un nuevo
objeto Persona.
33. CONSTRUCTORES
• Supongamos que este objeto tiene tres
datos y que queremos darle valores a
esos datos del objeto luego de creado:
Edad, Estatura y Color_Ojos. Haremos lo
siguiente:
Juan.Edad = 32
Juan.Estatura = 180
Juan.Color_Ojos = “Marron”
34. CREAR CONSTRUCTORES
• Habitualmente, los constructores de clase se crean de
tal modo que podamos hacer las dos cosas a la vez:
crear el objeto y dar valores a sus datos, veamos cómo:
Dim Juan As Persona
Juan = New Persona(32, 180, “Marron”)
• Para esto el constructor en la clase Persona de crearà
de la siguiente forma:
Public Sub New(ByVal pEdad As Integer, ByVal pEstatura As Integer,
ByVal pColor_Ojos As String)
Edad = pEdad
Estatura = pEstatura
Color_Ojos = pColor_Ojos
End Sub
35. VARIOS CONSTRUCTORES
• Normalmente las clases tiene más de un
constructor, de esta forma podemos crear
objetos e inicializarlos de distintas formas.
Así, podemos tener un constructor de la
clase Persona que recibe solo la edad,
otro la edad y la estatura, otro la edad, la
estatura y el color de ojos, etc.
• El número y tipo de constructores solo
depende de nuestras necesidades y del
sentido común.
36. CONSTRUCTOR ARGUMENTO CERO
• Existe un constructor especial al que se le llama
"constructor argumento-cero" y es aquel que no
recibe ningún parámetro.
• Él inicializa el objeto con los valores por defecto.
De este modo, podríamos tener un constructor
por defecto de la clase Persona que pusiera el
dato edad a 30, la estatura a 175 y el Color-de-
ojos a marrón. O todos los datos en cero, o
simplemente el cosntructor vacío.
• En todos las clases siempre es conveniente
crear un constructor de este tipo.
37. DEFINICIÓN DE HERENCIA
• Cualidad más importante de un sistema
POO, permitiendo ahorrar tiempo de
codificación.
• Como todos entendemos lo que es la
herencia biológica, continuaremos
utilizando este ejemplo.
38. DEFINICIÓN DE HERENCIA
• La clase Conejo, hereda cualidades (métodos)
de todas las clases predecesoras (Hervívoros y
Mamíferos) pero a su vez posee métodos
propios. Hervívoros a su vez hereda de
Mamíferos (clase predesesora).
Mamíferos
Hervívoros
Conejo Caballo
Carnívoros
Oso Gato
Onivoros
Humanos Perro
39. DEFINICIÓN DE HERENCIA
• Veamos que hereda la clase Conejo de sus
clases padres:
Clase Que hereda
Mamíferos Se alimenta de leche materna
Hervívoros Come solo vegetales
Conejos Uno de sus alimentos es
zanahoria
• Por lo tanto podemos decir que un conejo se
alimenta de leche materna, come vegetales, y
su alimento preferido es la zanahoria.
40. DEFINICIÓN DE HERENCIA
• Cuando utilizamos herencia, es importante
tener en cuenta que todo objeto hijo puede
instanciarse dentro de un objeto del tipo
padre.
41. CLASE ABSTRACTA
• Una clase abstracta es aquella que
construimos para derivar de ella otras
clases, pero de la que no se puede
instanciar.
• Por ejemplo, la clase mamífero, no existe
como tal en la naturaleza, no existe
ningún ser que sea tan solo mamífero,
existen humanos, gatos, conejos, etc.
Todos ellos son mamíferos, pero no existe
un animal que sea solo mamífero.
42. CLASE ABSTRACTA
Mamíferos
Hervívoros
Conejo Caballo
Carnívoros
Oso Gato
Onivoros
Humanos Perro
• Del mismo modo, la clase que se halla al inicio de la
jerarquía de clases, normalmente es creada sólo para que
contenga aquellos datos y métodos comunes a todas las
clases que de ella derivan.
• En árboles complejos de jerarquías de clases, suele haber
más de una clase abstracta.
43. DEFINICIÓN DE POLIMORFISMO
• Por polimorfismo entendemos aquella
cualidad que poseen los objetos para
responder de distinto modo ante el mismo
mensaje.
• Tomemos las clases barco, avión y auto,
todas ellas derivadas de la clase padre
vehículo. Un vehículo cuenta con el
método Desplazarse, el cual será
heredado por las clases hijas.
44. DEFINICIÓN DE POLIMORFISMO
• Sin embargo, si bien todos son vehículos,
cada objeto se desplaza de una forma
distinta que cada una conoce.
45. DEFINICIÓN DE POLIMORFISMO
• En este caso si llamamos al métotodo
Desplazarse desde Auto, se ejecutará el
método de la clase padre, pero lo mismo pasará
si lo ejecutamos desde Barco o Avión.
Vehiculo
+Marca
+Modelo
+Desplazarse(pCoordenadas)
Barco
+Ancla
Avion
+Turbinas
Auto
+Ruedas
46. DEFINICIÓN DE POLIMORFISMO
• Para solucionar este problema, debemos
sobreescribir el método de la clase padre en
cada clase hija para que de esta forma un
mismo métdo, en este caso Desplazarse realice
distintas acciones dependiendo de cada objeto.
Vehiculo
+Marca
+Modelo
+Desplazarse(pCoordenadas)
Barco
+Ancla
+Desplazarse(pCoordenadas)
Avion
+Turbinas
+Desplazarse(pCoordenadas)
Auto
+Ruedas
+Desplazarse(pCoordenadas)
47. POLIMORFISMO - SOBRECARGA
• La sobrecarga puede ser considerada
como un tipo especial de polimorfismo que
casi todos los lenguajes de POO incluyen.
• Varios métodos pueden tener el mismo
nombre siempre y cuando el tipo de
parámetros que recibe o el número de
ellos sea diferente.
48. POLIMORFISMO - SOBRECARGA
• Por ejemplo la clase Hoja puede tener
tantos método Escribir() como tipos de
datos queramos escribir.
49. POLIMORFISMO - SOBRECARGA
• Luego al invocar la función, al momento
de asignar los parámetros, nos mostrará
las distintas opciones:
1 de 3: nos indica que existen 3
sobrecargas para el método Escribir
Notas del editor
No aparece un lenguaje nuevo sin que incluya OOP (como es el caso de Java). Es por esto que intentaremos que todo lo que aquí se
diga pueda ser aplicado a cualquier lenguaje OOP.