SlideShare une entreprise Scribd logo
1  sur  53
IAGP  Programación Orientada a Objetos Desarrollo de software orientado a objetos Definición Método de desarrollo de software que basa la arquitectura del sistema en módulos deducidos de los tipos de objetos que se manipulan, en lugar de basarse en la función o funciones a las que el sistema está destinado a asegurar. No preguntes primero  qué hace el sistema , pregunta   ¡¡A QUIÉN LO HACE!!
IAGP  Programación Orientada a Objetos 2.1 Orígenes El tiempo transcurrido entre el desarrollo convencional del software y el desarrollo orientado a objetos, no se  solapa. Hay más de 25 años, surgió con el lenguaje  Simula , en Noruega, aunque comercialmente se ha difundido recientemente. Simula es acrónimo de “simulación lenguaje” y fue creado para soportar simulaciones, por O. J. Dahl yKristen Nygaard. Su propósito fue la simulación de sistemas físicos complejos con muchos cientos de componentes. En Simula los módulos no se basan en procedimientos como en la programación convencional, sino en los objetos físicos que se modelan en la simulación.
IAGP  Programación Orientada a Objetos Los objetos del mundo real pueden exhibir una variedad infinita de efectos sobre otros, creando, destruyendo, levantando, uniendo, comprando, doblándose, enviando, etc.  Esta gran variedad suscita un problema:  ¿Cómo se pueden representar en software las diversas clases de interacciones ?  Los autores de Simula lograron una solución elegante a este problema:  el  mensaje .  Los  objetos  interaccionan el uno con el otro con mensajes que piden que los objetos realicen sus métodos.  Un mensaje es simplemente el nombre de un objeto seguido por el nombre de un  método  que el objeto sabe ejecutar.  Si un método requiere alguna información adicional para saber qué hacer, el mensaje incluye la información como  parámetros .
IAGP  Programación Orientada a Objetos El objeto que inicia un mensaje se llama el remitente de ese mensaje, y el objeto que recibe el mensaje se llama el receptor.  El hecho de que los métodos están asociados siempre a objetos específicos tiene un efecto secundario interesante que resulta ser ventajoso.  Diversos objetos pueden responder al mismo mensaje genérico, pero cada objeto puede interpretar el mensaje de una manera distinta.  Por ejemplo, un objeto camión podría poner en ejecución su propia versión del mensaje mueve_A, al igual que una nave, un tren, un avión, una persona, o cualquier cosa  que se mueva. En el mundo real la manera en que estos objetos determinan sus rutas, planean sus movimientos, y realizan estos desplazamientos se diferencia radicalmente, pero todos entenderían una petición común de ir a un destino especificado.
IAGP  Programación Orientada a Objetos La capacidad de diversos objetos para responder al mismo mensaje de diversas maneras se llama  polimorfismo , que en griego significa "muchas formas."  El término puede intimidar, y el polimorfismo a menudo se considera un concepto avanzado en tecnología de objetos.  Pero la idea básica no podía ser más simple:  cada objeto puede tener una respuesta única al mismo mensaje.  A veces, una simulación implica solamente un ejemplo de una clase particular de objeto. Sin embargo es mucho más común, necesitar más de un objeto de cada tipo. Esta posibilidad levanta otra preocupación:  sería extremadamente ineficaz redefinir los mismos métodos en cada ocurrencia de ese objeto.
IAGP  Programación Orientada a Objetos Aquí, otra vez, los autores de Simula aportaron una solución elegante:  la  clase .  Una clase es una plantilla de software que define los métodos y las variables que se incluirán en un tipo particular de objeto.  Los métodos y las variables que hacen el objeto se definen solamente una vez, en la definición de la clase. Los objetos que pertenecen a una clase se llaman generalmente  instancias  de la clase y contienen solamente sus propios valores particulares para las variables.  Un programa orientado a objetos (poo), se define de la forma: Objetos + Mensajes = Programa
IAGP  Programación Orientada a Objetos
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos Programa OO Clase Objeto Los objetos se comunican mediante mensajes Colección estructurada de clases Implementación de un TAD Una instancia de una clase
IAGP  Programación Orientada a Objetos 2.2 Comparación con los seres vivos El bloque de edificio básico a partir del cual se componen los seres  vivos es la célula.  Las células son "paquetes orgánicos", como objetos, combinan la información relacionada y comportamiento.  La mayoría de la información está contenida en moléculas de proteína, dentro del núcleo de la célula.  El comportamiento, que puede extenderse desde conversión de energía al movimiento, es realizado por estructuras fuera del núcleo.  Las células están rodeadas por una membrana que permite solamente ciertas clases de intercambios químicos con otras.  Esta membrana protege el funcionamiento interno de la célula contra la intrusión exterior, y también oculta la complejidad, presentando un interfaz relativamente simple al resto del organismo.
IAGP  Programación Orientada a Objetos Todas las interacciones entre las células ocurren a través de los mensajes químicos, reconocidos por la membrana de la célula y pasados a su través al interior de la célula.
IAGP  Programación Orientada a Objetos Los objetos que contienen a otros, se llaman objetos compuestos, son importantes porque pueden representar estructuras más sofisticadas que los objetos simples. Un avión consiste en alas, motores, y otros componentes que son demasiado complejos para representarlos de forma simple.  Colecciones de objetos Hay una clase especial de clases, a menudo llamada la colección de clases, que se puede encontrar en la biblioteca de clases en la mayoría de los lenguajes comerciales. Como el nombre sugiere, la función básica de una colección es recolectar juntos los objetos que se deben manejar como grupo.
IAGP  Programación Orientada a Objetos En un avión, por ejemplo, no crearíamos una variable separada para cada objeto del asiento, agruparíamos  todos los objetos del asiento en una colección y pondríamos una referencia a esa colección en un solo conjunto llamado variable.
IAGP  Programación Orientada a Objetos Aunque los mecanismos reales de células y de objetos apenas podrían ser más diferentes, sus funciones son similares.  Las células y los objetos encapsulan datos y comportamientos asociados;  ambos tienen interfaces que definen qué señales responderán a su ambiente;  ambos utilizan la comunicación basada en mensajes  para ocultar complejidad;  ambos se pueden organizar en una jerarquía de tipos especializados;  y ambos proporcionan los bloques de edificio fundamentales para construir una variedad infinita de sistemas complejos.  Esta semejanza, considerando la gran variedad de organismos vivos, demuestra claramente la flexibilidad de este acercamiento básico a a la construcción de sistemas complejos.
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos Respuestas a los mensajes En la mayoría de los sistemas, los mensajes requieren una cierta clase de respuesta del receptor.  Esta respuesta es generalmente llamada valor de retorno, puede ser datos simples, valores u objetos.
IAGP  Programación Orientada a Objetos La potencia de los polimorfismos, simplificación de programas Supónganos que estamos desarrollando un sistema que incluya instrumentos financieros tales como bonos y acciones.  El sistema debe permitir que realicemos una variedad de operaciones tales como añadir una nueva acción, seguir el funcionamiento de varias clases de instrumentos, y supervisión del valor actual de la cartera en su totalidad.  Nuestra primera clase es  cartera , un objeto compuesto que contiene un objeto de la colección de objetos llamada instrumentos_financieros. Nuestro primer método es  agregar , que toma un objeto instrumento financiero como su parámetro.
IAGP  Programación Orientada a Objetos
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],2.3 Modularidad
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],¿Debemos crear la clase  Rectangulo  partiendo de cero? Podemos aprovechar la existencia de similitudes y particularidades entre ambas clases
IAGP  Programación Orientada a Objetos ,[object Object],[object Object],[object Object],class  Rectangulo  inherit Poligono feature ...Características específicas para rectángulos end

Contenu connexe

Tendances

programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
jent46
 
P. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosP. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetos
Geovanny Yungán
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores
JoOsee Kette
 

Tendances (20)

Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
Metodología orientada a objetos
Metodología orientada a objetosMetodología orientada a objetos
Metodología orientada a objetos
 
Diagrama de estado
Diagrama de estadoDiagrama de estado
Diagrama de estado
 
Programación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVA
 
Active directory
Active directoryActive directory
Active directory
 
Diagrama UML de Clases
Diagrama UML de ClasesDiagrama UML de Clases
Diagrama UML de Clases
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()
 
Polimorfismo y Clases Abstractas
Polimorfismo y Clases AbstractasPolimorfismo y Clases Abstractas
Polimorfismo y Clases Abstractas
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Diagrama de Componentes
Diagrama de ComponentesDiagrama de Componentes
Diagrama de Componentes
 
Vista lógica
Vista lógicaVista lógica
Vista lógica
 
P. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosP. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetos
 
Introducción al Diagrama de Clases UML
Introducción al Diagrama de Clases UMLIntroducción al Diagrama de Clases UML
Introducción al Diagrama de Clases UML
 
Plsql y paquetes
Plsql y paquetesPlsql y paquetes
Plsql y paquetes
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Jsp
JspJsp
Jsp
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores
 
Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 

En vedette

Para exposición
Para exposiciónPara exposición
Para exposición
YODLIROSS
 
Viabilidad - Planificación de Tiempos
Viabilidad - Planificación de TiemposViabilidad - Planificación de Tiempos
Viabilidad - Planificación de Tiempos
afrancesconi
 
2011 2012-practica poo.v.1.2
2011 2012-practica poo.v.1.22011 2012-practica poo.v.1.2
2011 2012-practica poo.v.1.2
MarcosFerVega
 

En vedette (20)

Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Manual de instalacion netbeans 7.2
Manual de instalacion netbeans 7.2Manual de instalacion netbeans 7.2
Manual de instalacion netbeans 7.2
 
Introducción a la POO
Introducción a la POOIntroducción a la POO
Introducción a la POO
 
Para exposición
Para exposiciónPara exposición
Para exposición
 
Viabilidad - Planificación de Tiempos
Viabilidad - Planificación de TiemposViabilidad - Planificación de Tiempos
Viabilidad - Planificación de Tiempos
 
02 Bases Del Lenguaje Java
02   Bases Del Lenguaje Java02   Bases Del Lenguaje Java
02 Bases Del Lenguaje Java
 
FPJUCE - Capitulo2
FPJUCE - Capitulo2FPJUCE - Capitulo2
FPJUCE - Capitulo2
 
Cafeteando east
Cafeteando eastCafeteando east
Cafeteando east
 
06 Paquetes Y Java Classpath
06   Paquetes Y Java Classpath06   Paquetes Y Java Classpath
06 Paquetes Y Java Classpath
 
Analisis orientado a objetos
Analisis orientado a objetosAnalisis orientado a objetos
Analisis orientado a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
13 Networking
13   Networking13   Networking
13 Networking
 
Conceptos de la poo
Conceptos de la pooConceptos de la poo
Conceptos de la poo
 
Entrega final
Entrega finalEntrega final
Entrega final
 
Tutorial eclipse 1
Tutorial eclipse 1Tutorial eclipse 1
Tutorial eclipse 1
 
2011 2012-practica poo.v.1.2
2011 2012-practica poo.v.1.22011 2012-practica poo.v.1.2
2011 2012-practica poo.v.1.2
 
Java
JavaJava
Java
 
J2EE - 01 Arquitectura Web
J2EE - 01   Arquitectura WebJ2EE - 01   Arquitectura Web
J2EE - 01 Arquitectura Web
 
INTRODUCCION A LA POO
INTRODUCCION A LA POOINTRODUCCION A LA POO
INTRODUCCION A LA POO
 

Similaire à Conceptos Basicos de POO

Actividad nº 7
Actividad nº 7Actividad nº 7
Actividad nº 7
marcos_77
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
Carlos Esteves
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
Carlos Esteves
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
Agapito26
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetos
Angel Ordoñez
 
Programacion orientada objetos-1
Programacion orientada objetos-1Programacion orientada objetos-1
Programacion orientada objetos-1
Scott Chavez
 
Diseño Orientado a Objetos
Diseño Orientado a ObjetosDiseño Orientado a Objetos
Diseño Orientado a Objetos
MegaMono
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
brandonhh10
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
janinaplaza
 

Similaire à Conceptos Basicos de POO (20)

Programacion o o
Programacion o oProgramacion o o
Programacion o o
 
Programacion o o
Programacion o oProgramacion o o
Programacion o o
 
Trabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaTrabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y java
 
Orientado a objeto
Orientado a objetoOrientado a objeto
Orientado a objeto
 
LABORATORIO DE PROGRAMACIÓN I
LABORATORIO DE PROGRAMACIÓN ILABORATORIO DE PROGRAMACIÓN I
LABORATORIO DE PROGRAMACIÓN I
 
Actividad nº 7
Actividad nº 7Actividad nº 7
Actividad nº 7
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Asignación 1 astrid c.
Asignación 1 astrid c.Asignación 1 astrid c.
Asignación 1 astrid c.
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetos
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
Tc2 301403 21
Tc2 301403 21Tc2 301403 21
Tc2 301403 21
 
Programacion orientada objetos-1
Programacion orientada objetos-1Programacion orientada objetos-1
Programacion orientada objetos-1
 
Poo
PooPoo
Poo
 
Diseño Orientado a Objetos
Diseño Orientado a ObjetosDiseño Orientado a Objetos
Diseño Orientado a Objetos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 

Plus de Henrry Eliseo Navarro Chinchilla (20)

Is
IsIs
Is
 
Listasenlazadas 100517143015-phpapp02
Listasenlazadas 100517143015-phpapp02Listasenlazadas 100517143015-phpapp02
Listasenlazadas 100517143015-phpapp02
 
Bucarasica
BucarasicaBucarasica
Bucarasica
 
Bucarasica
BucarasicaBucarasica
Bucarasica
 
5 a bd_servidor
5 a bd_servidor5 a bd_servidor
5 a bd_servidor
 
Introducion uml
Introducion umlIntroducion uml
Introducion uml
 
Complejidad
ComplejidadComplejidad
Complejidad
 
Apuntes2
Apuntes2Apuntes2
Apuntes2
 
Apuntes2
Apuntes2Apuntes2
Apuntes2
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Gestionde fichero
Gestionde ficheroGestionde fichero
Gestionde fichero
 
Metodos en php
Metodos en phpMetodos en php
Metodos en php
 
Grafos
GrafosGrafos
Grafos
 
Exploration network chapter7
Exploration network chapter7Exploration network chapter7
Exploration network chapter7
 
Exploration network chapter11
Exploration network chapter11Exploration network chapter11
Exploration network chapter11
 
Exploration network chapter10
Exploration network chapter10Exploration network chapter10
Exploration network chapter10
 
Exploration network chapter9
Exploration network chapter9Exploration network chapter9
Exploration network chapter9
 
Exploration network chapter8
Exploration network chapter8Exploration network chapter8
Exploration network chapter8
 
Exploration network chapter7
Exploration network chapter7Exploration network chapter7
Exploration network chapter7
 
Fichero
FicheroFichero
Fichero
 

Conceptos Basicos de POO

  • 1. IAGP Programación Orientada a Objetos Desarrollo de software orientado a objetos Definición Método de desarrollo de software que basa la arquitectura del sistema en módulos deducidos de los tipos de objetos que se manipulan, en lugar de basarse en la función o funciones a las que el sistema está destinado a asegurar. No preguntes primero qué hace el sistema , pregunta ¡¡A QUIÉN LO HACE!!
  • 2. IAGP Programación Orientada a Objetos 2.1 Orígenes El tiempo transcurrido entre el desarrollo convencional del software y el desarrollo orientado a objetos, no se solapa. Hay más de 25 años, surgió con el lenguaje Simula , en Noruega, aunque comercialmente se ha difundido recientemente. Simula es acrónimo de “simulación lenguaje” y fue creado para soportar simulaciones, por O. J. Dahl yKristen Nygaard. Su propósito fue la simulación de sistemas físicos complejos con muchos cientos de componentes. En Simula los módulos no se basan en procedimientos como en la programación convencional, sino en los objetos físicos que se modelan en la simulación.
  • 3. IAGP Programación Orientada a Objetos Los objetos del mundo real pueden exhibir una variedad infinita de efectos sobre otros, creando, destruyendo, levantando, uniendo, comprando, doblándose, enviando, etc. Esta gran variedad suscita un problema: ¿Cómo se pueden representar en software las diversas clases de interacciones ? Los autores de Simula lograron una solución elegante a este problema: el mensaje . Los objetos interaccionan el uno con el otro con mensajes que piden que los objetos realicen sus métodos. Un mensaje es simplemente el nombre de un objeto seguido por el nombre de un método que el objeto sabe ejecutar. Si un método requiere alguna información adicional para saber qué hacer, el mensaje incluye la información como parámetros .
  • 4. IAGP Programación Orientada a Objetos El objeto que inicia un mensaje se llama el remitente de ese mensaje, y el objeto que recibe el mensaje se llama el receptor. El hecho de que los métodos están asociados siempre a objetos específicos tiene un efecto secundario interesante que resulta ser ventajoso. Diversos objetos pueden responder al mismo mensaje genérico, pero cada objeto puede interpretar el mensaje de una manera distinta. Por ejemplo, un objeto camión podría poner en ejecución su propia versión del mensaje mueve_A, al igual que una nave, un tren, un avión, una persona, o cualquier cosa que se mueva. En el mundo real la manera en que estos objetos determinan sus rutas, planean sus movimientos, y realizan estos desplazamientos se diferencia radicalmente, pero todos entenderían una petición común de ir a un destino especificado.
  • 5. IAGP Programación Orientada a Objetos La capacidad de diversos objetos para responder al mismo mensaje de diversas maneras se llama polimorfismo , que en griego significa "muchas formas." El término puede intimidar, y el polimorfismo a menudo se considera un concepto avanzado en tecnología de objetos. Pero la idea básica no podía ser más simple: cada objeto puede tener una respuesta única al mismo mensaje. A veces, una simulación implica solamente un ejemplo de una clase particular de objeto. Sin embargo es mucho más común, necesitar más de un objeto de cada tipo. Esta posibilidad levanta otra preocupación: sería extremadamente ineficaz redefinir los mismos métodos en cada ocurrencia de ese objeto.
  • 6. IAGP Programación Orientada a Objetos Aquí, otra vez, los autores de Simula aportaron una solución elegante: la clase . Una clase es una plantilla de software que define los métodos y las variables que se incluirán en un tipo particular de objeto. Los métodos y las variables que hacen el objeto se definen solamente una vez, en la definición de la clase. Los objetos que pertenecen a una clase se llaman generalmente instancias de la clase y contienen solamente sus propios valores particulares para las variables. Un programa orientado a objetos (poo), se define de la forma: Objetos + Mensajes = Programa
  • 7. IAGP Programación Orientada a Objetos
  • 8.
  • 9. IAGP Programación Orientada a Objetos Programa OO Clase Objeto Los objetos se comunican mediante mensajes Colección estructurada de clases Implementación de un TAD Una instancia de una clase
  • 10. IAGP Programación Orientada a Objetos 2.2 Comparación con los seres vivos El bloque de edificio básico a partir del cual se componen los seres vivos es la célula. Las células son "paquetes orgánicos", como objetos, combinan la información relacionada y comportamiento. La mayoría de la información está contenida en moléculas de proteína, dentro del núcleo de la célula. El comportamiento, que puede extenderse desde conversión de energía al movimiento, es realizado por estructuras fuera del núcleo. Las células están rodeadas por una membrana que permite solamente ciertas clases de intercambios químicos con otras. Esta membrana protege el funcionamiento interno de la célula contra la intrusión exterior, y también oculta la complejidad, presentando un interfaz relativamente simple al resto del organismo.
  • 11. IAGP Programación Orientada a Objetos Todas las interacciones entre las células ocurren a través de los mensajes químicos, reconocidos por la membrana de la célula y pasados a su través al interior de la célula.
  • 12. IAGP Programación Orientada a Objetos Los objetos que contienen a otros, se llaman objetos compuestos, son importantes porque pueden representar estructuras más sofisticadas que los objetos simples. Un avión consiste en alas, motores, y otros componentes que son demasiado complejos para representarlos de forma simple. Colecciones de objetos Hay una clase especial de clases, a menudo llamada la colección de clases, que se puede encontrar en la biblioteca de clases en la mayoría de los lenguajes comerciales. Como el nombre sugiere, la función básica de una colección es recolectar juntos los objetos que se deben manejar como grupo.
  • 13. IAGP Programación Orientada a Objetos En un avión, por ejemplo, no crearíamos una variable separada para cada objeto del asiento, agruparíamos todos los objetos del asiento en una colección y pondríamos una referencia a esa colección en un solo conjunto llamado variable.
  • 14. IAGP Programación Orientada a Objetos Aunque los mecanismos reales de células y de objetos apenas podrían ser más diferentes, sus funciones son similares. Las células y los objetos encapsulan datos y comportamientos asociados; ambos tienen interfaces que definen qué señales responderán a su ambiente; ambos utilizan la comunicación basada en mensajes para ocultar complejidad; ambos se pueden organizar en una jerarquía de tipos especializados; y ambos proporcionan los bloques de edificio fundamentales para construir una variedad infinita de sistemas complejos. Esta semejanza, considerando la gran variedad de organismos vivos, demuestra claramente la flexibilidad de este acercamiento básico a a la construcción de sistemas complejos.
  • 15.
  • 16. IAGP Programación Orientada a Objetos Respuestas a los mensajes En la mayoría de los sistemas, los mensajes requieren una cierta clase de respuesta del receptor. Esta respuesta es generalmente llamada valor de retorno, puede ser datos simples, valores u objetos.
  • 17. IAGP Programación Orientada a Objetos La potencia de los polimorfismos, simplificación de programas Supónganos que estamos desarrollando un sistema que incluya instrumentos financieros tales como bonos y acciones. El sistema debe permitir que realicemos una variedad de operaciones tales como añadir una nueva acción, seguir el funcionamiento de varias clases de instrumentos, y supervisión del valor actual de la cartera en su totalidad. Nuestra primera clase es cartera , un objeto compuesto que contiene un objeto de la colección de objetos llamada instrumentos_financieros. Nuestro primer método es agregar , que toma un objeto instrumento financiero como su parámetro.
  • 18. IAGP Programación Orientada a Objetos
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.