SlideShare una empresa de Scribd logo
1 de 49
POO
PROGRAMACIÓN ORIENTADA
A OBJETOS
Docente: Rafael Mourglia
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
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.
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.
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.
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).
PARADIGMA IMPERATIVO
Ejemplo programación lineal
Ejemplo programación estructurada
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
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.
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.
¿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.
¿QUÉ NO ES LA POO?
• No es un un lenguaje.
• De hecho las técnicas de POO
pueden utilizarse en cualquier
lenguaje conocido.
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
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.
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.
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.
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
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.
EJEMPLOS DE OBJETO
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.
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.
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
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.
ENCAPSULACIÓN EN VB.NET
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)
ENCAPSULACIÓN EN VB.NET
Set
Get
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.
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
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
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
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:
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.
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”
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
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.
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.
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.
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
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.
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.
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.
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.
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.
DEFINICIÓN DE POLIMORFISMO
• Sin embargo, si bien todos son vehículos,
cada objeto se desplaza de una forma
distinta que cada una conoce.
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
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)
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.
POLIMORFISMO - SOBRECARGA
• Por ejemplo la clase Hoja puede tener
tantos método Escribir() como tipos de
datos queramos escribir.
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

Más contenido relacionado

Similar a poo+neohj.pptx

Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosJose Angel Rodriguez
 
Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosJose Angel Rodriguez
 
Elemtos de programacion
Elemtos de programacionElemtos de programacion
Elemtos de programacionpepepaso
 
Ingeniería de requerimientos i
Ingeniería de requerimientos iIngeniería de requerimientos i
Ingeniería de requerimientos iPablo Macon
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosalexmoncada21
 
Programacion orientada objeto (poo)
Programacion orientada objeto (poo)Programacion orientada objeto (poo)
Programacion orientada objeto (poo)YamilethRivas3
 
Unidad III epoo
Unidad III epooUnidad III epoo
Unidad III epoolhgarzonr
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfSantiagoValenzuela24
 
2983238 programacion-orientada-a-objetos
2983238 programacion-orientada-a-objetos2983238 programacion-orientada-a-objetos
2983238 programacion-orientada-a-objetosjohnny herrera
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructuradavnslgars
 
Lenguajesdeprogramacion c nivel2-unidad4-01-introduccion a la poo
Lenguajesdeprogramacion c nivel2-unidad4-01-introduccion a la pooLenguajesdeprogramacion c nivel2-unidad4-01-introduccion a la poo
Lenguajesdeprogramacion c nivel2-unidad4-01-introduccion a la pooJacki Wan
 
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020Laura Noussan Lettry
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetoswellington018
 
Programacion Orientada a Objetos en python
Programacion Orientada a Objetos en pythonProgramacion Orientada a Objetos en python
Programacion Orientada a Objetos en pythonwozgeass
 
Python 3
Python 3Python 3
Python 3CHREAR
 

Similar a poo+neohj.pptx (20)

Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetos
 
Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetos
 
Elemtos de programacion
Elemtos de programacionElemtos de programacion
Elemtos de programacion
 
Ingeniería de requerimientos i
Ingeniería de requerimientos iIngeniería de requerimientos i
Ingeniería de requerimientos i
 
Introducción a la PPO
 Introducción a la PPO Introducción a la PPO
Introducción a la PPO
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Clase 2
Clase 2 Clase 2
Clase 2
 
Clase4_Python-CTIC
Clase4_Python-CTICClase4_Python-CTIC
Clase4_Python-CTIC
 
Programacion orientada objeto (poo)
Programacion orientada objeto (poo)Programacion orientada objeto (poo)
Programacion orientada objeto (poo)
 
Unidad III epoo
Unidad III epooUnidad III epoo
Unidad III epoo
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdf
 
2983238 programacion-orientada-a-objetos
2983238 programacion-orientada-a-objetos2983238 programacion-orientada-a-objetos
2983238 programacion-orientada-a-objetos
 
Compu 1
Compu 1Compu 1
Compu 1
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Lenguajesdeprogramacion c nivel2-unidad4-01-introduccion a la poo
Lenguajesdeprogramacion c nivel2-unidad4-01-introduccion a la pooLenguajesdeprogramacion c nivel2-unidad4-01-introduccion a la poo
Lenguajesdeprogramacion c nivel2-unidad4-01-introduccion a la poo
 
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programacion Orientada a Objetos en python
Programacion Orientada a Objetos en pythonProgramacion Orientada a Objetos en python
Programacion Orientada a Objetos en python
 
Python 3
Python 3Python 3
Python 3
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 

poo+neohj.pptx

  • 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).
  • 7. PARADIGMA IMPERATIVO Ejemplo programación lineal Ejemplo programación estructurada
  • 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

  1. 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.