orientada a objetos i programación. antes de intentar aprender algo ten presente… lo complejo,...

73
Orientada a Objetos I Orientada a Objetos I Programación Programación

Upload: concha-madero

Post on 21-Jan-2015

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Orientada a Objetos IOrientada a Objetos IProgramaciónProgramación

Page 2: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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.

Page 3: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

El problema está en la El problema está en la técnicatécnica, ,

no en la no en la herramientaherramienta

Page 4: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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!

Page 5: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Listo?Listo?

Page 6: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Que es la Que es la

orientación a objetosorientación a objetos??

Page 7: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

La orientación a La orientación a objetos es un objetos es un paradigma de paradigma de programaciónprogramación

Page 8: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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… …

Page 9: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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 …

Page 10: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 11: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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…

Page 12: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

PINCIPIOS EN QUE SE APOYA LA TECNOLOGÍA O.O.

• Objeto como instancia de una Clase• Métodos• Mensajes

Page 13: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Artefacto más importante en el AOO

Explica los conceptos más significativos en un dominio del problema.

Previo a esto es fundamental establecer y perfeccionar el glosario del dominio

En un modelo conceptual se ofrece una representación de cosas del mundo real, no de componentes de software.

Page 14: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Un modelo conceptual muestra:

• Los conceptos.• Las asociaciones entre conceptos.• Los atributos de los conceptos.

Un concepto se considera a partir de su: Símbolo * Definición * Extensión.

Una distinción fundamental entre el AOO y el

AE es la división por conceptos y no porfunciones

Page 15: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 16: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 17: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 18: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 19: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 20: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Veamos algunosVeamos algunos

conceptos clave…conceptos clave…

Qué es un Qué es un Objeto?Objeto?

Page 21: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Cualquier CosaCualquier Cosa

Un Un ObjetoObjeto es… es…

Page 22: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

En serio!En serio!

Cualquier CosaCualquier Cosa

Page 23: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Cualquier CosaCualquier Cosa……de la que puedas de la que puedas emitir un concepto…emitir un concepto…

Page 24: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Cualquier CosaCualquier Cosa,,

todo todo es un objetoes un objeto

Es decir…Es decir…

Page 25: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 26: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Este es un objetoobjeto

…es un automóvil automóvil de plásticoplástico, rojorojocon 4 llantas4 llantas y 2 puertas2 puertas

Veamos…Veamos…

Page 27: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 28: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 29: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

A ese A ese concepto conocidoconcepto conocido que representa una que representa una agrupaciónagrupación de objetosde objetos

……lo llamamoslo llamamos Clase Clase

Page 30: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 31: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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.

Page 32: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 33: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 34: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 35: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 36: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 37: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 38: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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))

Page 39: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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.

Page 40: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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.

Page 41: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 42: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Los Los objetosobjetos tienen diferentes tipos de tienen diferentes tipos de

relacionesrelaciones

AsociaciónAsociación

Agregación/ComposiciónAgregación/Composición

Page 43: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Ahora veamos conceptos Ahora veamos conceptos avanzadosavanzados

Page 44: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

… la modularidadmodularidad y la reusabilidadreusabilidadQué son?

Los principios que dirigen la orientación a objetos son…

Page 45: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

En términos simples la modularidadmodularidad significa trabajar por partes…

Page 46: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 47: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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?….

Page 48: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 49: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Cuando decimos que un componente tiene una bajo acoplamiento bajo acoplamiento hablamos del nivel de independenciaindependencia que tiene un

componente con respecto a otrosotros

Page 50: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Características de la Características de la Orientación a ObjetosOrientación a Objetos

Page 51: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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.

Page 52: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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.

Page 53: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 54: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 55: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 56: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Resumen  

Todo es un objeto Todo es un objeto Los objetos realizan operaciones (computan) Los objetos realizan operaciones (computan) solicitando servicios entre ellos a través del paso de solicitando servicios entre ellos a través del paso de mensajes mensajes Todo objeto es una instancia de una clase. Todo objeto es una instancia de una clase. Una clase agrupa objetos similaresUna clase agrupa objetos similares.

En la clase se describe el comportamiento de los En la clase se describe el comportamiento de los objetosobjetos.

Las clases están organizadas en una jerarquía con Las clases están organizadas en una jerarquía con una única raíz, llamada la jerarquía de herenciauna única raíz, llamada la jerarquía de herencia.

Page 57: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

El secreto: un cambio de visión

La POO no es, como muchos afirman, un paradigma distinto del de la programación procedural. Ambas son dos técnicas distintas para abordar la programación imperativa

El secreto fundamental consiste en dejar de ver a un programa como un conjunto de acciones y funciones que modifican parámetros, para verlo como un conjunto de objetos con comportamiento, y a estos como estructuras que contienen acciones y funciones

Page 58: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 59: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

… 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…

Page 60: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

IDEA BÁSICA DETRÁS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Lenguajes imperativos: Son aquellos basados en sentencias, ya sean procedurales, orientados a objetos puros o mixtos. Entre ellos se cuentan Pascal, C, C++, Java, Fortran, Perl y Python.Lenguajes procedurales: Son lenguajes imperativos basados en procedimientos (o rutinas) y funciones. Entre ellos podemos nombrar a C, Fortran, Pascal (estándar) y Basic

Page 61: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Son lenguajes imperativos basados en clases (algunos, llamados mixtos soportan también el modelo procedural). Entre los lenguajes orientados a objetos puros podemos nombrar a Smalltalk, Eiffel y Java. Entre los mixtos se encuentran C++ y Python.

Lenguajes orientados a objetos

Page 62: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

… Son aquellos basados en funciones matemáticas (y no en comandos o

sentencias). Podemos nombrar aquí a ML, Haskell y Lisp.

Lenguajes Funcionales

Page 63: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

program personas;type persona = record nombre: string; apellido: string; edad: integer end; procedure inicializar(n, a: string; e: integer; var p: persona);

begin p.nombre := n; p.apellido := a; p.edad := eend;

Page 64: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

function es_mayor(p: persona): boolean;begin return p.edad >= 18end;function nombre_completo(p: persona): string;begin return p.nombre + " " + p.apellido;end; var p: persona;

Page 65: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

• begin inicializar("Juan", "Perez", 25, p); write(nombre_completo(p)); if (es_mayor(p)) then writeln (" es mayor de edad.") else writeln (" es menor de edad.")end

Page 66: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

En los programas procedurales En los programas procedurales hacemos esto todo el tiempo: definimos hacemos esto todo el tiempo: definimos estructuras y tipos de datos y luego estructuras y tipos de datos y luego creamos procedimientos y funciones creamos procedimientos y funciones que toman como parámetros variables que toman como parámetros variables de estos tipos y realizan distintas de estos tipos y realizan distintas operaciones sobre ellos. Dicho de otra operaciones sobre ellos. Dicho de otra manera: podemos ver a los programas manera: podemos ver a los programas procedurales como un conjunto de procedurales como un conjunto de procedimientos y funciones que procedimientos y funciones que manipulan estructuras de datos manipulan estructuras de datos pasadas como parámetrospasadas como parámetros

Page 67: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Una visión diferente

program personas;type persona = record    nombre: string;    apellido: string;    edad: integer;    procedure inicializar(n, a: string; e: integer);    begin        nombre := n;        apellido := a;        edad := e    end;function es_mayor: boolean;    begin        return edad >= 18    end;

Page 68: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

function nombre_completo: string;    begin        return nombre + " " + apellido;    endend;var    p: persona;begin    p.inicializar("Juan", "Perez", 25);    write(p.nombre_completo);    if (p.es_mayor) then        writeln (" es mayor de edad.")    else        writeln (" es menor de edad.")end.

Page 69: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

Una diferencia importante de notación a la hora de usar la estructura de datos definida, es que ya no utilizamos expresiones de la forma funcion(variable), sino que ahora escribimos variable.funcion.Una ventaja adicional es que la notación es más consistente. Al referirnos a p.nombre_completo no podemos saber (porque en realidad no interesa) si nombre_completo es un campo del registro o una función. Esto es realmente importante: en el caso del campo edad este podría ser reemplazado por una función que calcule la edad de la persona, añadiendo un campo que represente la fecha de nacimiento. De ocurrir esto, los programas que usen el tipo persona no requerirían mayores modificaciones, ya que podrían seguir haciendo referencia a p.edad. Esto facilita la independencia de la implementación y el encapsulamiento, uno de los conceptos claves de la POO.

Page 70: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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.

Page 71: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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.

Page 72: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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

Page 73: Orientada a Objetos I Programación. Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple

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";}?>