1_Tema 1 POO

Embed Size (px)

Citation preview

  • 8/18/2019 1_Tema 1 POO

    1/47

    Ing. S. Roxana Justiniano Siles

  • 8/18/2019 1_Tema 1 POO

    2/47

    CONCEPTOSIntroducción

    Un concepto muy importante introducido por laprogramación estructurada es la abstracción . Laabstracción se puede definir como la capacidad deexaminar algo sin preocuparse de los detalles

    internos.En un programa estructurado es suficiente

    conocer que un procedimiento dado realiza una

    tarea específica. El cómo se realiza la tarea noes importante mientras el procedimiento seafia!le se puede utilizar sin tener que conocercómo funciona su interior. Esto se conoce como

    a!stracción funcional.

  • 8/18/2019 1_Tema 1 POO

    3/47

    Una de!ilidad de la programación estructuradaaparece cuando programadores diferentestra!a"an en una aplicación como un equipo.#ado que programadores diferentes manipulanfunciones separadas que pueden referirse a tipos de

    datos mutuamente compartidos$ los cam!ios deun programador se de!en refle"ar en el tra!a"o delresto del equipo. %tro pro!lema de la programación

    estructurada es que raramente es posi!le anticiparel dise&o de un sistema completo antes de que seimplemente realmente.

  • 8/18/2019 1_Tema 1 POO

    4/47

    En esencia$ un defecto de la programaciónestructurada$ como se aca!a de 'er$ consisteen la separación conceptual de datos y código.

    Este defecto se agra'a a medida que el tama&o#el programa crece.

  • 8/18/2019 1_Tema 1 POO

    5/47

    Abstracción de datosLa abstracción de datos permite no preocuparsede los detalles no esenciales. Existe en casitodos los lengua"es de programación. Lasestructuras de datos y los tipos de datos son une"emplo de a!stracción. Los procedimientos yfunciones son otro e"emplo. Sólo recientemente(an emergido lengua"es que soportan suspropios tipos abstractos de datos )*+#,$ como

    -ascal$ +da$ odula/0 $122$ etc...

  • 8/18/2019 1_Tema 1 POO

    6/47

    ¿Qué es la programación orientada aobjetos

    Se puede definir POO como una t3cnica o estilode programación que utiliza o!"etos como !loqueesencial de construcción.

    Los objetos son en realidad como los tiposa!stractos de datos. Un TA! es un tipo definido porel programador "unto con un con"unto deoperaciones que se pueden realizar so!re ellos. Sedenominan a!stractos para diferenciarlos de lostipos de datos fundamentales o !4sicos.

  • 8/18/2019 1_Tema 1 POO

    7/47

  • 8/18/2019 1_Tema 1 POO

    8/47

    Trabajando con objetos En programación con'encional los programas se

    di'iden en dos componentes5 procedimientos ydatos. Este m3todo permite empaquetar códigode programa en procedimientos$ pero 78u3sucede con los datos9 Las estructuras de datos

    utilizadas en programación son glo!ales o sepasan como par4metros. En esencia los datos setratan separadamente de los procedimientos.En POO un programa se di'ide en componentes

    que contienen procedimientos y datos. 1adacomponente se considera un objeto .

  • 8/18/2019 1_Tema 1 POO

    9/47

    Un objeto es una unidad que contiene datos ylas funciones que operan sobre esos datos . +

    los elementos de un o!"eto se les conoce comomiembros las funciones que operan so!re losdatos se denominan métodos y los datos sedenominan miembros, atributos o datos . En

    Ja'a un programa consta de o!"etos. Loso!"etos de un programa se comunican entre símediante el paso o envío de mensajes )acciones que de!e e"ecutar el o!"eto,.

    En POO los o!"etos pueden ser cualquierentidad del mundo real5

  • 8/18/2019 1_Tema 1 POO

    10/47

    " Objetos físicos: automó'iles en una simulación de

    tr4fico: a'iones en un sistema de control de

    tr4fico a3reo: animales mamíferos$ etc

    " Elementos de interfaces gráficos de usuarios : 'entanas: iconos: men;s: ratones

  • 8/18/2019 1_Tema 1 POO

    11/47

    " Estructuras de datos: arrays: pilas: 4r!oles !inarios

    " Tipos de datos definidos por el usuario: n;meros comple"os

    : (ora del día

  • 8/18/2019 1_Tema 1 POO

    12/47

    !e#inición de objetosUn objeto es una unidad que contiene datos

    y las funciones que operan so!re esosdatos. Los datos se denominan miembrosdato y las funciones métodos o funcionesmiembro .

    Los datos y las funciones se encapsulan enuna ;nica entidad. Los datos est4n ocultosy sólo mediante las funciones miem!ro esposi!le acceder a ellos

  • 8/18/2019 1_Tema 1 POO

    13/47

    ClasesUna clase es un tipo definido por el usuario que

    determina las estructuras de datos y las operacionesasociadas con ese tipo. 1ada 'ez que se construye uno!"eto de una clase$ se crea una instancia de esaclase. En general$ los t3rminos objetos e instancias deuna clase se pueden utilizar indistintamente.

    Una clase es una colección de o!"etos similares y uno!"eto es una instancia de una definición de una clase.La comunicación con el o!"eto se realiza a tra'3s delpaso de mensa"es. El envío a una instancia de unaclase produce la ejecución de un método o funciónmiembro . El paso de mensa"es es el t3rmino utilizadopara referirnos a la in'ocación o llamada de unafunción miem!ro de un o!"eto.

  • 8/18/2019 1_Tema 1 POO

    14/47

    $ensajes% acti&ación de objetos

    Los o!"etos pueden ser acti'ados mediante larecepción de mensa"es o m3todos. Un

    método es simplemente una petición paraque un o!"eto se comporte de unadeterminada manera$ e"ecutando una de susfunciones miem!ro. La t3cnica de en'iar

    mensa"es se conoce como paso de mensajes .

  • 8/18/2019 1_Tema 1 POO

    15/47

    Estructuralmente un mensa"e consta de trespartes5

    / la identidad del objeto receptor / la función miembro del receptor cuyae"ecución se (a solicitado/ cualquier otra información adicional que el

    receptor pueda necesitar para e"ecutar elm3todo requerido.La notación utilizada esnombre del objeto!función miembro

  • 8/18/2019 1_Tema 1 POO

    16/47

    Ejemplo 5 Se tiene un o!"eto o< con lossiguientes miem!ros dato 5 nom!re=alumno ycurso y con las funciones miem!ro5leer'nombre e imprimir . Si el o!"eto o<reci!e el mensa"e imprimir$ esto se expresa5

    o"!imprimir#$La sentencia anterior se lee5 >en'iar mensa"eimprimir al o!"eto o. El o!"eto o< reaccionaal mensa"e e"ecutando la función miem!ro deigual nom!re que el mensa"e.

  • 8/18/2019 1_Tema 1 POO

    17/47

    El mensa"e puede lle'ar par4metros5o-edro -3rez>,

    Sin los mensa"es los o!"etos que se definan no

    podr4n comunicarse con otros o!"etos. #esdeun punto de 'ista con'encional$ el paso demensajes no es m4s que el sinónimo dellamada a una función!

  • 8/18/2019 1_Tema 1 POO

    18/47

    Programa orientado a objetosUn programa orientado a o!"etos es una colección

    de clases. ?ecesitar4 una función principal quecree o!"etos y comience la e"ecución mediantela in'ocación de sus funciones miem!ro.Esta organización conduce a separar partesdiferentes de una aplicación en distintosarc(i'os. La idea consiste en poner la descripciónde la clase para cada una de ellas en un arc(i'oseparado. La función principal tam!i3n se poneen un arc(i'o independiente. El compiladorensam!lar4 el programa completo a partir de losarc(i'os independientes en una ;nica unidad.

  • 8/18/2019 1_Tema 1 POO

    19/47

    En realidad$ cuando se e"ecuta un programaorientado a o!"etos$ ocurren tres acciones5

  • 8/18/2019 1_Tema 1 POO

    20/47

    (erenciaLa herencia es la propiedad que permite a los

    o!"etos construirse a partir de otroso!"etos.Una clase se puede di'idir en subclases . Laclase original se denomina clase base las

    clases que se definen a partir de la clase!ase$ compartiendo sus características ya&adiendo otras nue'as$ se denominanclases derivadas!

    Las clases deri'adas pueden (eredar códigoy datos de su clase !ase a&adiendo su propiocódigo y datos a la misma.

  • 8/18/2019 1_Tema 1 POO

    21/47

    La (erencia impone una relación"er4rquica entre clases en la cual unaclase hija (ereda de su clase padre . Siuna clase sólo puede reci!ircaracterísticas de otra clase !ase$ la(erencia se denomina herencia simple .Si una clase reci!e propiedades de m4sde una clase !ase$ la (erencia sedenomina herencia m%ltiple!

  • 8/18/2019 1_Tema 1 POO

    22/47

    Polimor#ismo

    En un sentido literal$ significa la cualidad detener m4s de una forma. En el contexto dePOO$ el polimorfismo se refiere al (ec(ode que una misma operación puede tenerdiferente comportamiento en diferenteso!"etos. -or e"emplo$ consideremos laoperación sumar. El operador 2 realiza lasuma de dos n;meros de diferente tipo.+dem4s se puede definir la operación desumar dos cadenas mediante el operadorsuma.

  • 8/18/2019 1_Tema 1 POO

    23/47

    Las clases son uno de los principalescomponentes de un lengua"e de programación$pues en ellas ocurren todos los procesos lógicosrequeridos para un sistema$ en si podemosdefinirlas como estructuras que representano!"etos del mundo real$ tomando como o!"etosa personas$ lugares o cosas$ en general lasclases poseen propiedades$ comportamientos yrelaciones con otras clases del sistema. ) )erEjemplo*** ,

  • 8/18/2019 1_Tema 1 POO

    24/47

    Una clase se compone por tres partesfundamentales:

    Nombre : Contiene el Nombre de la Clase.Atributos : Representan las propiedades quecaracterizan la clase.M é todos : Representan el comportamiento uoperaciones, la forma como interact ú a la clase

    con su entorno.

  • 8/18/2019 1_Tema 1 POO

    25/47

  • 8/18/2019 1_Tema 1 POO

    26/47

    Los o!"etos representan una entidad concreta o

    a!stracta del mundo real$ en programación!4sicamente se le conoce como la instancia deuna clase en si es lo que da el sentido a estas.+l igual que las clases se componen de tres

    partes fundamentales5Estado 5 Representa los atri!utos ocaracterísticas con 'alores concretos del o!"eto.Comportamiento 5 Se define por los m3todos u

    operaciones que se pueden realizar con el.Identidad 5 Es la propiedad ;nica querepresenta al o!"eto y lo diferencia del resto.

  • 8/18/2019 1_Tema 1 POO

    27/47

    En la imagen$ los moldes representan las clases$mientras que las galletas o!tenidas de estos moldesrepresentan los o!"etos instancias de estas clases$por e"emplo atri!utos del o!"eto galleta podría sersa!or$ color$ tama&o etc......

    E " ' t d i t i d

  • 8/18/2019 1_Tema 1 POO

    28/47

    En "a'a se representa creando una instancia dela clase por medio de la pala!ra ne+ al (acereso creamos el o!"eto de la clase y podemos(acer uso de los m3todos o atri!utos de esta)dependiendo de la 'isi!ilidad de los mismos ,por medio de un punto ) *, así5

  • 8/18/2019 1_Tema 1 POO

    29/47

    La (erencia en "a'a representa lo queconocemos de (erencia en el mundo real$!4sicamente mediante esta o!tenemos lascaracterísticas o rasgos comunes de nuestrospadres o a!uelos$ en "a'a es el mismo enfoquepermitiendo la creación de nue'as clases!asadas en clases ya existentes$ con las cualespodemos o!tener las características de lasclases padres$ (eredando campos$ atri!utos$m3todos o funcionalidades.

  • 8/18/2019 1_Tema 1 POO

    30/47

  • 8/18/2019 1_Tema 1 POO

    31/47

    En Ja'a solo se puede (eredar de una sola clasepadre y se representa mediante la pala!rae-tends .)er Ejemplo***/

  • 8/18/2019 1_Tema 1 POO

    32/47

    Este concepto es uno de los mas importantesen t3rminos de seguridad dentro de nuestraaplicación$ la encapsulación es la forma deproteger nuestros datos dentro del sistema$esta!leciendo !4sicamente los permisos oni'eles de 'isi!ilidad o acceso de nuestrosdatos

  • 8/18/2019 1_Tema 1 POO

    33/47

    P0blico 5 Se puede acceder a todos losatri!utos o m3todos de la clase.Protegido 5 Se puede acceder a los atri!utos om3todos solo en la misma "erarquía de(erencia.Pri&ado 5 Solo se puede acceder a los atri!utoso m3todos de la clase en la que se encuentran.

  • 8/18/2019 1_Tema 1 POO

    34/47

    1on la Encapsulación mantenemos nuestrosdatos seguros$ ya que podemos e'itar que pore"emplo se (agan modificaciones al estado ocomportamiento de un o!"eto desde una claseexterna$ una !uena practica es tra!a"arcon m3todos setter y getter que permitenmanipular nuestros datos de forma segura.

  • 8/18/2019 1_Tema 1 POO

    35/47

  • 8/18/2019 1_Tema 1 POO

    36/47

    La abstracci ó n permite resaltar la parte mas representativade algo, ignorando detalles para centrarse en lo principal.

    La imagen es muy f á cil de identificar, con base a ellapodemos crear una clase persona, o lac lase hombre, humano entre otras, pero obviamentevemos que la imagen no tiene elementos como o os, nariz,boca, rostro en general, ni dedos, pies, manos ocuello....... pero entonces porque decimos que es unapersona!........."recisamente aqu í estamos aplicando elconcepto de abstracci ó n, ya que nos fi amos en lo masrepresentativo de algo, en este caso vemos que se tiene

    una cabeza, tronco, brazos y pies, con esto es suficientepara saber que es una persona sin fi arnos en los detallesmencionados anteriormente.

  • 8/18/2019 1_Tema 1 POO

    37/47

    Las clases a!stractas permiten crear m3todos generalescon un comportamiento com;n para otras clases concretassin importar sus características ni el comportamiento que

    usen para dic(os m3todos.

    La +!stracción en "a'a solo tiene lógica mediante laAerencia$ ya que una clase a!stracta posee al menos unm3todo a!stracto el cual no tiene implementación$ el

    comportamiento de estos m3todos lo definen las clasesconcretas que lo (ereden.-odemos usarlos cuando existan 'arias clases concaracterísticas o acciones comunes pero con diferentescomportamientos..............mediante el uso de la

    (erencia y componentes a!stractos (acemos mas óptima yorganizada nuestra aplicación. )(ay que tener en cuentaque a diferencia de las clases concretas$ las clasesa!stractas no se pueden instanciar,.))er Ejemplo*** ,

  • 8/18/2019 1_Tema 1 POO

    38/47

  • 8/18/2019 1_Tema 1 POO

    39/47

    Las interfaces son el mecanismo que utiliza Ja'a parasimular la (erencia m;ltiple$ como mencionamos en Ja'asolo se puede extender de una sola clase$ mediante el uso deinterfaces esto se puede simular ya que el lengua"e permiteimplementar el numero de interfaces que necesitemos$!4sicamente son clases completamente a!stractas$ es com;nrelacionarlas con un contrato en el que se define que sede!e (acer$ así cada clase concreta que implemente unainterfaz esta o!ligada a implementar todos los m3todos quela compongan.Las interfaces definen lo que la clase que la implementede!er4 (acer$ mas no la forma como lo (ar4.

    l d l f l l

  • 8/18/2019 1_Tema 1 POO

    40/47

    +l decir que las interfaces son clases completamentea!stractas significa que todos sus m3todos lo son y porende no poseen implementación$ no requieren el usode la pala!ra reser'ada abstract $ ya que al sercompletamente a!stracta todo dentro de ella lo es$ aligual que las clases a!stractas la implementación delos m3todos depende de las clases concretas que lasusen.

    Se de!e tener en cuenta que toda 'aria!le definida enuna interfaz autom4ticamente se con'ierte en unaconstante$ adem4s tampoco se puede instanciar unainterfaz.....

    ))er Ejemplo*** ,

  • 8/18/2019 1_Tema 1 POO

    41/47

    En "a'a se representan con la pala!ra inter#ace yse usan con la pala!ra implements así5

  • 8/18/2019 1_Tema 1 POO

    42/47

    Este tal 'ez sea uno de los conceptos de la

    programación orientada a o!"etos mas usadospero muc(as 'eces sin sa!er que se aplica yaque el concepto inicialmente puede ser un pococonfuso$ !4sicamente mediante el polimorfismo

    programamos de forma general en lugar de(acerlo de forma especifica$ se usa cuando setra!a"en con la (erencia y o!"etos decaracterísticas comunes los cuales comparten lamisma super1lase y 4r!ol "er4rquico$ al tra!a"arcon este concepto optimizamos y simplificamosen gran medida nuestro tra!a"o.

  • 8/18/2019 1_Tema 1 POO

    43/47

    B4sicamente podemos definirlo como lacapacidad que tienen los o!"etos decomportarse de m;ltiples formas sin ol'idarque para esto se requiere de la (erencia$ en siconsiste en (acer referencia a o!"etos de unaclase que puedan tomar comportamientos deo!"etos descendientes de esta.

  • 8/18/2019 1_Tema 1 POO

    44/47

    1on el polimorfismo usamos la generalizaciónol'idando los detalles concretos de los o!"etos paracentrarnos en un punto en com;n mediante una clase

    padre.*omando como e"emplo la imagen anterior$ podemosdecir que un o!"eto de la clase 1igura2eometricapuede usarse para referirse a cualquier o!"eto de

    cualquier subClase de 1igura2eometrica ..............en otras pala!ras una figura geom3trica puede ser uncuadro$ un tri4ngulo$ un cuadrado o cualquier figuraque en t3rminos generales sea geom3trica......)Ejemplo3 , ) Ejemplo4 ,

  • 8/18/2019 1_Tema 1 POO

    45/47

  • 8/18/2019 1_Tema 1 POO

    46/47

    1omo 'emos en el e"emplo la claseCiguraDeometrica puede con'ertirse encualquier figura que se encuentra en su"erarquía de Aerencia pudiendo utilizar laspropiedades que compartan entre ellas$ (ayque tener presente que solo se permiteel polimorfismo de clases padre a clases (i"amas no al contrario

  • 8/18/2019 1_Tema 1 POO

    47/47

    En Ja'a existe la so!recarga y la so!reescritura$y de ellas solo la so!recarga es de (erencia.

    El polimorfismo en -%% se refiere a la capacidadde nom!rar a 'arios atri!uto m3todos ofunciones de la misma forma y aun así poderdiferenciarlos$ ya sea por los par4metros$ o la

    clase a donde pertenece. -ara ponerlo f4cil es laforma de englo!ar los comportamientos yatri!utos que pueden ser comunes$ y aun asípoder usar sus diferentes >'ariantes> del mismo$de a(í lo de polimorfismo )'arias formas,