7-Programación Objetual

29
1

description

POO

Transcript of 7-Programación Objetual

Page 1: 7-Programación Objetual

1

Page 2: 7-Programación Objetual

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

Page 3: 7-Programación Objetual

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

Page 4: 7-Programación Objetual

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

Page 5: 7-Programación Objetual

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:

Page 6: 7-Programación Objetual

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

Page 7: 7-Programación Objetual

7

CLASE Gato

CARÁCTER raza

CARÁCTER color

ENTERO edad

CARÁCTER nombre

VOID comer()

VOID correr()

VOID dormir()

VOID maullar()

Page 8: 7-Programación Objetual

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

Page 9: 7-Programación Objetual

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

Page 10: 7-Programación Objetual

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

Page 11: 7-Programación Objetual

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

Page 12: 7-Programación Objetual

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

Page 13: 7-Programación Objetual

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

Variables de la clase?

Métodos?

13

Page 14: 7-Programación Objetual

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

Page 15: 7-Programación Objetual

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

Page 16: 7-Programación Objetual

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

Page 17: 7-Programación Objetual

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

Page 18: 7-Programación Objetual

Persona

añoNacimientopesoestatura

calcularIndiceMasaCorporal( )calcularEdad( )

samuel: Persona

añoNacimiento= 1951peso= 90estatura= 1.80

calcularIndiceMasaCorporal( )calcularEdad( )

18

Page 19: 7-Programación Objetual

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

Page 20: 7-Programación Objetual

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

Page 21: 7-Programación Objetual

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

Page 22: 7-Programación Objetual

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

Page 23: 7-Programación Objetual

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

Page 24: 7-Programación Objetual

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

Page 25: 7-Programación Objetual

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

Page 26: 7-Programación Objetual

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

Page 27: 7-Programación Objetual

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

Page 28: 7-Programación Objetual

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

Page 29: 7-Programación Objetual

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