Date post: | 28-Jan-2016 |
Category: |
Documents |
Upload: | nohemi-carbon |
View: | 214 times |
Download: | 0 times |
Orientada a Objetos IOrientada a Objetos IProgramaciónProgramación
Antes de intentar aprender algo Antes de intentar aprender algo ten presente…ten presente…
lo complejo, alguna vez… fue lo complejo, alguna vez… fue simplesimple,,entiende lo simple.entiende lo simple.
El problema está en la El problema está en la técnicatécnica, ,
no en la no en la herramientaherramienta
Si no eres nuevo en esto de programar, pero aún no Si no eres nuevo en esto de programar, pero aún no entiendes la orientación a objetos…entiendes la orientación a objetos…
deshazte de vicios y empieza nuevamente!deshazte de vicios y empieza nuevamente!
Listo?Listo?
Que es la Que es la
orientación a objetosorientación a objetos??
La orientación a La orientación a objetos es un objetos es un paradigma de paradigma de programaciónprogramación
Típico!Típico!
Si bien esta definición Si bien esta definición es correctaes correcta, , el problema está, en el problema está, en
que tanto lo comprendemosque tanto lo comprendemos… …
A título personal…A título personal…
La La orientación a objetos orientación a objetos es “simplemente” es “simplemente”
una forma de ver las cosas, una forma de ver las cosas, o bien …o bien …
……es una forma de es una forma de entender un problema entender un problema identificando las identificando las entidadesentidades principales que se encuentran principales que se encuentran en el..en el..
La La programación orientada a objetos (POO) programación orientada a objetos (POO) es por tanto es por tanto
una forma de desarrollar un sistemauna forma de desarrollar un sistema, , pensando en las pensando en las entidades principales entidades principales del del problema que dicho sistema pretende resolver…problema que dicho sistema pretende resolver…
PINCIPIOS EN QUE SE APOYA LA TECNOLOGÍA O.O.
• Objeto como instancia de una Clase• Métodos• Mensajes
El lenguaje de programación es El lenguaje de programación es
la herramienta la herramienta para resolver elpara resolver el problemaproblema
El El propósitopropósito de la de la POOPOO no tiene que ver con no tiene que ver con el lenguaje de programaciónel lenguaje de programación
El propósito de la El propósito de la programación orientada a objetosprogramación orientada a objetos consiste en…consiste en…
proporcionar una solución informática identificando los proporcionar una solución informática identificando los
conceptos relevantesconceptos relevantes presentes en el problema presentes en el problema
Identificar los conceptos relevantes Identificar los conceptos relevantes
o las o las entidades involucradas entidades involucradas en un problema significa…en un problema significa…
reconocer las reconocer las característicascaracterísticas de estos y las de estos y las
accionesacciones que realizan o bien que producen algún efecto que realizan o bien que producen algún efecto sobre ellossobre ellos
Con respecto a los Con respecto a los lenguajes de programación lenguajes de programación podemos decir que…podemos decir que…
cada uno usa la herramientacada uno usa la herramienta en que más hábil se considere,en que más hábil se considere,
el el problema problema finalmentefinalmente no cambiano cambia
De acuerdo a la situación con una u otra herramienta se nos hace De acuerdo a la situación con una u otra herramienta se nos hace
más o menos difícilmás o menos difícil
… … y de acuerdo al escenario se debe elegiry de acuerdo al escenario se debe elegir
una u otra herramienta de trabajouna u otra herramienta de trabajo
Veamos algunosVeamos algunos
conceptos clave…conceptos clave…
Qué es un Qué es un Objeto?Objeto?
Cualquier CosaCualquier Cosa
Un Un ObjetoObjeto es… es…
En serio!En serio!
Cualquier CosaCualquier Cosa
Cualquier CosaCualquier Cosa……de la que puedas de la que puedas emitir un concepto…emitir un concepto…
Cualquier CosaCualquier Cosa,,
todo todo es un objetoes un objeto
Es decir…Es decir…
……el mundo está lleno de objetos el mundo está lleno de objetos reales, los cuales se pueden reales, los cuales se pueden
representar como tales en una representar como tales en una solución computarizada.solución computarizada.
Este es un objetoobjeto
…es un automóvil automóvil de plásticoplástico, rojorojocon 4 llantas4 llantas y 2 puertas2 puertas
Veamos…Veamos…
Si realizáramos el proceso mental lentamente, Si realizáramos el proceso mental lentamente, nos daríamos cuenta de que al ver el objetonos daríamos cuenta de que al ver el objeto
emitimos un concepto preconcebidoemitimos un concepto preconcebido
es decires decir automóvilautomóvil
En la imagen cada uno de los elementos que vemos es considerado En la imagen cada uno de los elementos que vemos es considerado
un objetoun objeto
Sin embargo de todos ellos podemos emitir Sin embargo de todos ellos podemos emitir
un un concepto conocido concepto conocido y para ello usamos la palabra y para ello usamos la palabra
globoglobo
A ese A ese concepto conocidoconcepto conocido que representa una que representa una agrupaciónagrupación de objetosde objetos
……lo llamamoslo llamamos Clase Clase
UnaUna clase clase es como un molde de galletas…es como un molde de galletas…
… … este determina la forma y este determina la forma y característicascaracterísticas que que
la galleta (la galleta (el objetoel objeto) va a tener, sin ser el objeto real) va a tener, sin ser el objeto real
El molde (El molde (la clasela clase) no determina por ejemplo, que sabor tiene ) no determina por ejemplo, que sabor tiene cada una de las galletas…cada una de las galletas…
……tampoco por cuanta cantidad de ingredientes estará compuesta.tampoco por cuanta cantidad de ingredientes estará compuesta.
La La claseclase es una… es una…
……los los objetosobjetos son todos los que podamos crear son todos los que podamos crear
mentalmente a partir de dicha mentalmente a partir de dicha claseclase o conceptoo concepto
LaLa clase clase ……
… … Describe un conjunto de objetos del Contexto del Describe un conjunto de objetos del Contexto del Problema, que tienen las mismas características y el Problema, que tienen las mismas características y el
mismo comportamiento mismo comportamiento
Hagamos un ejercicio, el típico…Hagamos un ejercicio, el típico…
……el concepto que elegiremos es la clase el concepto que elegiremos es la clase
personapersona
Este grupo de Este grupo de personaspersonas tiene un conjunto de tiene un conjunto de
característicascaracterísticas y y comportamientoscomportamientos en comúnen común
CaracterísticasCaracterísticasNombreEdadColor de PielProfesiónEstado Civil
ComportamientosComportamientosHablarCaminarMirarNacerMorir
Un Un objetoobjeto de la de la claseclase personapersona sería sería
CaracterísticasCaracterísticasNombre: SandraEdad: 22Color de Piel: MorenaProfesión: DeportistaEstado Civil: Soltera
ComportamientosComportamientosHablarCaminarMirarNacerMorir
Otro Otro objetoobjeto de la de la claseclase personapersona sería sería
CaracterísticasCaracterísticasNombre: CarlosEdad: 28Color de Piel: BlancoProfesión: AbogadoEstado Civil: Casado
ComportamientosComportamientosHablarCaminarMirarNacerMorir
Ya vamos entendiendo…Ya vamos entendiendo…
Una Una claseclase esta compuesta por esta compuesta por
característicascaracterísticas ((atributos o propiedadesatributos o propiedades) )
y por y por comportamientoscomportamientos ((acciones o métodosacciones o métodos))
Las Las característicascaracterísticas y y comportamientoscomportamientos de una clase de una clase son determinadas por el son determinadas por el contexto del problemacontexto del problema o escenario o escenario
Esto en programación quiere decir, que dentro de un sistema, Esto en programación quiere decir, que dentro de un sistema, solosolo
implementamos los implementamos los atributosatributos y y métodosmétodos relacionados con el relacionados con el ámbito del problema ámbito del problema que estamos solucionando.que estamos solucionando.
Veamos algunos conceptos adicionales…
A los valores que tienen los atributos de un A los valores que tienen los atributos de un
objetoobjeto se les conoce como el se les conoce como el estadoestado del del objeto, y a los atributos y métodos que ofrece se objeto, y a los atributos y métodos que ofrece se
les conoce como la les conoce como la interfaz interfaz al código al código usado para construir las clases se le conoce como usado para construir las clases se le conoce como
la la implementaciónimplementación de la clase.de la clase.
Interfaz 1. f. Inform. Conexión física y funcional entre dos aparatos o sistemas independientes.
Los Los objetosobjetos se se comunicancomunican con otros a con otros a
través de través de mensajesmensajesUn mensaje es una
comunicación dirigida a un objeto, que le ordena que ejecute uno de sus
métodos con ciertos parámetros asociados al
evento que lo generó.
Wikipedia
Los Los objetosobjetos tienen diferentes tipos de tienen diferentes tipos de
relacionesrelaciones
AsociaciónAsociación
Agregación/ComposiciónAgregación/Composición
Ahora veamos conceptos Ahora veamos conceptos avanzadosavanzados
… la modularidadmodularidad y la reusabilidadreusabilidadQué son?
Los principios que dirigen la orientación a objetos son…
En términos simples la modularidadmodularidad significa trabajar por partes…
Y la reusabilidadreusabilidad significa
No se invente la rueda!
Lo que ya esta hecho es para usarse y algunas de las cosas que no están hechas, deben
construirse pensando en que alguien necesitará usarlo alguna vez
Con respecto a la comunicación Con respecto a la comunicación tenemos más principiostenemos más principios
alta cohesión alta cohesión y el bajo acoplamientobajo acoplamiento
… que tan claros los tenemos?….
Cuando decimos que un componente tiene una alta cohesión alta cohesión hablamos de
que todos los elementos dentrodentro de el están estrechamente relacionados… el criterio de relación debe ser de negocio o técnico y no subjetivo
Cuando decimos que un componente tiene una bajo acoplamiento bajo acoplamiento hablamos del nivel de independenciaindependencia que tiene un
componente con respecto a otrosotros
Características de la Características de la Orientación a ObjetosOrientación a Objetos
AbstracciónAbstracciónQuitar propiedades y acciones de Quitar propiedades y acciones de un objeto para dejar solo las un objeto para dejar solo las necesariasnecesarias
Proceso mental que tiene dos aspectos complementarios El Proceso mental que tiene dos aspectos complementarios El aspecto de aspecto de destacardestacar los detalles relevantes del objeto de los detalles relevantes del objeto de estudio estudio El aspecto de El aspecto de ignorarignorar los detalles irrelevantes del objeto los detalles irrelevantes del objeto.
EncapsulamientoEncapsulamiento
no puede ser manipulado directamente desde no puede ser manipulado directamente desde el exterior y su representación concreta es el exterior y su representación concreta es invisibleinvisible.
HerenciaHerenciaPoseer todas las características Poseer todas las características de la clase de la que provienede la clase de la que proviene
La herencia permite modelar La herencia permite modelar
relaciones del tipo ...relaciones del tipo ...es es es un… y clasificaciones y clasificaciones
Polimorfismo Polimorfismo Es la posibilidad de Es la posibilidad de definir de forma distinta un definir de forma distinta un
método, dependiendo del objetométodo, dependiendo del objeto
cada clase sabe como realizar tal operación cada clase sabe como realizar tal operación
Beneficios de la tecnología de objetos
1. Permite desarrollar software en mucho menos tiempo y con menos coste.2. Se consigue aumentar la calidad de los sistemas.3. El software orientado a objetos es más fácil de modificar y mantener.4. La tecnología de objetos facilita la adaptación al entorno y el cambio.5. Fomenta una metodología basada en componentes 6. Utiliza en el análisis y diseño
Recomendaciones finales
La POO representa un gran avance en la programación, tal como lo fue la programación estructurada en la década de los ‘70. Entre sus ventajas más importante se encuentran un notable aumento de la productividad del programador y de la robustez de los programas
… una serie de normas, de realizar las cosas de manera que otras personas
puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el código
se pueda reutilizar
La Programación orientación a objetos es…
AJUSTANDO NUESTRO VOCABULARIO
A lo que antes llamábamos tipo, refiriéndonos a estructuras
de datos, ahora lo llamamos clase, entendiendo como tal no
sólo las estructuras, sino también el comportamiento asociado (las acciones y funciones asociadas directamente con la estructura de datos).
A lo que antes llamábamos variable ahora lo llamamos
objeto. Así como las variables son de determinado tipo, los objetos son de determinada clase.
Los procedimientos y funciones definidos dentro de una clase se llaman métodos, en tanto que los campos se denominan atributos.
En nuestro ejemplo, podríamos decir que la clase persona tiene los atributos nombre, apellido y edad, y los métodos inicializar, nombre_completo y es_mayor.
Un concepto importante: la herencia
En la POO existe la posibilidad de extender el
comportamiento de una clase, añadiendo atributos y
métodos. El mecanismo utilizado para tal fin se denomina
herencia.Siguiendo con nuestro ejemplo, podríamos querer definir una clase empleado. Básicamente un empleado posee todas las características de una persona (tiene nombre y apellido, tiene sentido preguntarse si es mayor de edad, etc.). Sin embargo, un empleado tendrá otros atributos (por ejemplo, un salario, un cargo) y también otros métodos (liquidar_salario, etc.). Es por esto que bastará con definir a la clase empleado heredando de la clase persona (en POO se usa la expresión “un empleado es una persona“), y añadiendo el nuevo comportamiento (métodos y atributos).
ANEXO: Un ejemplo en PHP es un lenguaje con un sistema de tipos dinámico (una
característica que lo hace muy simple y rápido para pequeños desarrollos, pero que se vuelve un arma de doble filo en programas complejos).
<?function inicializar($nombre, $apellido, $edad) { $persona['nombre'] = $nombre; $persona['apellido'] = $apellido; $persona['edad'] = $edad; return $persona;}function nombre_completo($persona) { return $persona['nombre'] . ' ' .$persona['apellido'];}function es_mayor($persona) { return $persona['edad'] >= 18;}$p = inicializar('Juan', 'Perez', 25);echo nombre_completo($p);if (es_mayor($p)) { echo " es mayor de edad.\n";} else { echo " es menor de edad.\n";}?>