7-Programación Objetual

Post on 17-Jan-2016

57 views 0 download

description

POO

Transcript of 7-Programación Objetual

1

Hasta ahora hemos trabajado diferentesestructuras de control en un método principalo en métodos estáticos que son invocadosdesde la misma clase.

En este capítulo, se utilizarán las mismasestructuras pero en métodos de instancia queno son invocados desde clases sino desdeobjetos, aunque cumplen con las mismasdefiniciones de métodos presentadas en elcapítulo anterior.

2

Programar bajo el paradigma de programaciónorientada a objetos (POO) consiste en simular omodelar los objetos del mundo real.

Es una forma de programación que surge en losaños 70 pero tiene un desarrollo sorprendentelos años 90.

Las instrucciones hacen referencia a loselementos que nos rodean. Esos elementosrepresentan "objetos"; y todos los datos y todaslas acciones que se hagan con ellos o sobre ellos,están encapsuladas u ocultas en el objeto.

La base fundamental de la POO, son los Objetosy las Clases.

3

CARACTERISTICAS: raza color edad nombreVariables de la clase , son sustantivos

ACCIONES QUE PUEDE HACER:

comer correr dormir maullarMétodos de la clase, son verbos en infinitivo.

miau

Se puede definir la clase Gato, como una abstracción de todoslos gatos.

micifuz

En la granja existen los gatos miau ymicifuz, que tienen las mismascaracterísticas, pero con valoresdiferentes

CARACTERISTICAS: raza color edad nombre

ACCIONES QUE PUEDE HACER: comer correr dormir maullar

CARACTERISTICAS DE miau raza: burnés color: blanco - gris edad: 2 años nombre: miau

CARACTERISTICAS DE micifuz: raza : dorado Africano color : oro-blanco edad: 4 años nombre : micifuz

Objeto micifuz

Clase Gato:

Objeto miau:

Una clase es una plantilla para crear objetos,constituyendo una abstracción del mundo real. Unaclase es un tipo de dato definido por el programadory las variables definidas sobre ella se denominanobjetos. Se puede diagramar así:

CLASE NombreClaseVariable1Variable2…Método1()Método2()…

6

7

CLASE Gato

CARÁCTER raza

CARÁCTER color

ENTERO edad

CARÁCTER nombre

VOID comer()

VOID correr()

VOID dormir()

VOID maullar()

Un objeto es una instanciación de una clase, es decir,la materialización de la clase. Cuando se instancia unobjeto se le dan valores a las variables de la clase yse pueden invocar los métodos. Se pueden diagramarasí:

Nombre Objeto : ClaseVariable1= valorVariable2= valor…método1( )método2( )…

8

9

miau: Gato la Clase

Raza= burnés

color= blanco - gris

edad= 2 años

nombre= miau

VOID comer()

VOID correr()

VOID dormir()

VOID maullar()

Abstracción: es la característica más básica de laPOO, que permite identificar las cualidades yacciones que un objeto puede realizar.

Encapsulamiento: propiedad que tienen las clasesde agrupar las características y las acciones bajouna misma unidad de programación.

Ocultamiento de la Información: permiteproteger los objetos restringiendo y controlandoel acceso a la clase que los define.

10

Sobrecarga: Permite a una misma clase tener variosmétodos con el mismo nombre, inclusive con el mismovalor de retorno, pero con diferentes parámetros.

Polimorfismo: Este concepto es aplicado a varios objetosque comparten un método con el mismo nombre.

Herencia: Se pueden tener clases hijas con el mismocontenido de su clase padre, permitiendo la utilización declases existentes y adición de nuevas variables ymétodos.

Reutilización: Es una de las propiedades más deseadas enla programación ya que conlleva a un ahorro de tiempo yahorro de líneas de código.

11

Condicionan el acceso a las variables, métodos y clases,definiendo su nivel de ocultamiento. Pueden ser:

(+) Público: El elemento puede ser accedido desde cualquier clase.

(-) Privado: Solo se puede acceder al elemento desde métodos miembros de la clase.

(#) Protegido: Proporciona acceso público para las clases derivadas y acceso privado para el resto de clases.

( ) Sin modificador: Se puede acceder al elemento desde cualquier clase que esté en la misma ubicación (carpeta)

Nota Las clases no pueden declararse ni protegidas ni privadas

12

Diagramar una clase que permita representar un estudiante universitario y crear un objeto de dicha clase.

Variables de la clase?

Métodos?

13

MODIFICADOR_ACCESO CLASE Nombre_Clase

MODIFICADOR_ACCESO TIPO variable1MODIFICADOR_ACCESO TIPO variable2…MODIFICADOR_ACCESO TIPO_RETORNO metodo1()

…FIN_ metodo1

MODIFICADOR_ACCESO TIPO_RETORNO metodo2()…

FIN_ metodo2

FIN_CLASE

14

El constructor o función constructora es unmétodo público que tiene el mismo nombre de laclase y se ejecuta automáticamente al crear unobjeto de la clase, no tienen valor de retorno niparámetros de envío. Inicializa variables de laclase.

El destructor, que se ejecuta automáticamente aldestruirse la clase. Este método comúnmente esopcional y se utiliza para dar instruccionesfinales como liberar memoria, cerrar archivos,tiene el mismo nombre de la claseanteponiéndoosle el carácter “~”

15

Crear una clase que permita representar los datos básicos de una persona y calcular su índice de masa corporal y su edad.

16

Persona

+nombre

+año Nacimiento

+sexo

-peso

-estatura

+calcularIndiceMasaCorporal ( )

+calcula redad ( )

De una clase se pueden crear todos los objetos quesean necesarios, es decir, con la plantilla de la clase sepueden crear muchas personas. Este proceso esllamado instanciación de la clase.

Como el constructor se ejecuta automáticamente; entonces se le deben enviar los argumentos que necesite este método, si los tiene. Ejemplos:

Persona objeto1

objeto1=Persona (“SAMUEL”, 2010, “H”, 13.7, 90.5)

Persona objeto2=Persona (“MARÍA ISABEL”, 2002, “M”,

45, 140)17

Persona

añoNacimientopesoestatura

calcularIndiceMasaCorporal( )calcularEdad( )

samuel: Persona

añoNacimiento= 1951peso= 90estatura= 1.80

calcularIndiceMasaCorporal( )calcularEdad( )

18

Definidas las clases necesarias para solucionar un problema, se puede proceder a usarlas en el método principal.

Usualmente, es en este método donde se realiza el proceso de instanciación y se procede a utilizar las variables y los métodos de las clases.

Ejemplos:

objeto.variable //si la variable es públicaobjeto1.nombre=“DAVID” //se cambia nombreESCRIBA: objeto2.sexo //si la variable es públicaretorno=objeto.Metodo() //llamada func de retornoobjeto.Metodo() //llamada a un VOID

19

1. Identificación de datos, acciones y limitaciones:En la definición del problemas se identifican los datos de entrada, los datos de salida, los procesos o acciones.

2. Definición de clases:◦ Buscar los sustantivos relevantes dentro del enunciado

que no sean datos de entrada o de salida.

◦ Relacionar los sustantivos con los datos de entrada, los datos de salida y las acciones identificadas.

◦ Seleccionar como clases aquellos sustantivos que tienen asignado al menos un dato o al menos una acción.

20

3. Definición del método principal: Se debe analizar cuántos objetos deben ser creados de cada clase. Igualmente, se debe identificar cuáles métodos deben ser invocados para cada objeto.

4. Creación de pseudocódigo: Este es el paso final para solucionar un problema mediante POO. Se debe partir del diagrama de clases.

5. Prueba de escritorio: Este paso es muy importante para verificar que los datos de salida sean correctos.

21

Construir un programa que permita realizar lasoperaciones de suma, resta, multiplicación ydivisión de dos números ingresados por elusuario y otro método que encuentra la suma detres números. (El otro número se debe recibircomo parámetro)

22

Permiten consultar o modificar los atributos definidos en una clase. Son:

Obtener Variable (getVariable): Es una función queretorna el contenido de una variable de clase (loconsulta). No tiene parámetros de entrada.

Modificar Variable (setVariable): Es un VOID que permitecambiar el contenido de una variable. El nuevo valor esenviado como parámetro de entrada al método

NOTA: Si una clase tiene n variables tendrá 2n métodos accesores.

23

Construir un programa que permita manipular la cuentabancaria de una persona.

La información que se tiene de la cuenta es el número, la clavede acceso, el dueño y el saldo. Las operaciones que se puedenrealizar con la cuenta son: consignar dinero, retirar dinero,cambiar la clave y consultar el saldo.

Se debe crear la cuenta de Magdalena Sánchez, con número1012, clave 1234 y saldo en cero. A la cuenta en mención se leconsignan $100 000 y cambiarle la clave por 1217. También sedebe crear la cuenta de otra persona con datos entrados por elusuario y mostrar todos sus datos.

24

Construir un programa que calcule el promediocrédito de un estudiante.

Para cada materia se debe ingresar la nota y loscréditos.

El programa debe informar el nombre del estudiante,el semestre actual y el promedio crédito.

25

Desarrollar un conversor de cambio monetario depeso a dólar y de peso a euro.

El usuario debe tener la posibilidad de seleccionarsi desea ingresar el valor de las tasas de cambio osi desea utilizar las que tenga el programa pordefecto.

Además, se debe tener la posibilidad de convertirdiferentes cantidades.

26

Al igual que los hijos heredamos características denuestros padres, en la POO podemos obtener clases hijascon el mismo contenido de su clase padre, de esta manerase obtiene una reutilización de las clases.

La reutilización ha sido abordada en la programaciónestructural por medio de funciones. Esto permite crearlíneas de código que pueden ser invocadas tantas vecescomo sea necesario. En la POO este concepto es extendidoa las clases, de manera que no solo se utilizan clasesexistentes, sino que también se adicionan nuevas variablesy métodos a estas sin modificar el contenido original.

La reutilización se logra por medio de la herencia declases, donde la clase hija tiene a su disposición todos losmiembros de la clase padre, llamada también superclase oclase base. La clase hija es llamada también subclase oclase heredada.

27

28

En la figura la clase Mamifero es la clase padre, y las clases Gato, Vaca y Ballena heredan de ella, obteniendo las variables y métodos visibles de la clase padre.

las clases hijas pueden adicionar variables y métodos propios de cada animal sin afectar el comportamiento de las otras clases que heredaron

El concepto de polimorfismo se aplica a variosobjetos que comparten un método con elmismo nombre.

Cuando este método es invocado depende delobjeto que lo contiene; por lo tanto tendrá uncomportamiento diferente para cada instancia.

29