59
Bases para la programación por objetos Teoría básica

Bases para la programación por objetos Teoría básica

Embed Size (px)

Citation preview

Bases para la programación por objetos

Teoría básica

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

2

¿Qué es programar?

Programar es concebir, diseñar, y probar estructuras lógicas para resolver problemas por medio de un computador.

La programación puede visualizarse como un proceso cíclico.

Observe el siguiente diagrama…

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

3

Ciclo de desarrollo de un programa

Problema(Especificación)

AnálisisSub-problemas

Diseño

Implementación

Especificación

Programafuente

Prueba

Ejecutable

Representa?

Soluciona?

Compilación

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

4

¿Por qué es importante la especificación del problema?

El objetivo final en la elaboración de programas es solucionar un problema de la vida real.

La especificación del problema plantea cuál es el problema que se quiere resolver y cuáles son las características esperadas de una posible solución.

La mayor parte de los proyectos de desarrollo de “software” fallan debido a que se producen programas sin tener aún claro el problema y los requerimientos que tiene el usuario quien necesita del mismo.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

5

¿Qué es el análisis de un problema?

Es el proceso de descomposición del problema para comprenderlo en su totalidad.

Frecuentemente un problema es descompuesto en sub-problemas de menor complejidad a los cuales también se les debe aplicar un proceso de análisis.

El producto final del análisis es un modelo conceptual del problema.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

6

¿Para qué diseñar?

Al igual que es necesario contar con un “plano” antes de la construcción de un edificio, el diseño es necesario antes de iniciar la escritura de un programa.

El producto que se obtiene luego de esta etapa es una especificación de las características estructurales y funcionales del programa que se quiere construir.

En esta fase se define el “algoritmo” o “secuencia de pasos” necesarios para resolver un problema.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

7

¿Qué es un algoritmo?

Un algoritmo es la secuencia de pasos definidos para la resolución de un problema.

Por ejemplo: – El algoritmo de la derecha sirve

para encontrar el mayor de tres números A, B y C, independientemente de los valores

¡Cuidado! Al hablar no confunda la palabra “Algoritmo” con la palabra “Logaritmo” las cuales no tienen relación alguna.

1) Compare A y B. 2) Si A es mayor o igual que B

continúe con el paso 3 sino salte al 8 3) Compare A con C4) Si A es mayor o igual que C ejecute el paso 5 sino salte al 6

5) A es el mayor 6) Sino

7) C es el mayor8) Si B es mayor que A 9) Compare B con C

10) Si B es mayor o igual que C ejecute el paso 11 sino salte al 12

11) B es el mayor 12) Sino

13) C es el mayor

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

8

¿Qué es la implementación?

Es el proceso de escritura de las instrucciones que va a ejecutar el programa, utilizando un lenguaje de programación.

El producto de esta etapa es conocido como el “código fuente”, que consiste en instrucciones fáciles de leer por un humano.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

9

¿Qué es la compilación?

Es un proceso automático mediante el cual un programa conocido como “compilador” produce, a partir del código fuente, un programa ejecutable por el computador.

Al producto de este proceso normalmente se le llama programa binario o ejecutable.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

10

¿Qué es la etapa de pruebas?

Es el proceso mediante el cual se verifica que el programa funciona correctamente.

En otras palabras, son las pruebas que debe pasar el programa para verificar que resuelve el problema inicial.

Las pruebas deben diseñarse antes de iniciar con la etapa de programación o implementación.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

11

En cuanto a lo anterior vemos que programar no es solamente codificar

Muchos creen que programar es solamente codificar, y no se dan cuenta que programar es un proceso cíclico compuesto de varias etapas, que gira alrededor del problema que se quiere resolver.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

12

Sin embargo…

Existen diferentes “paradigmas” de programación.

El más utilizado en la actualidad es el “paradigma de programación orientada a objetos” o P.O.O.

Por lo tanto, en este curso se utiliza P.O.O.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

13

¿Qué es programación por objetos?

La P.O.O. pretende modelar la realidad como una serie de objetos que se mezclan e interactúan entre sí.

Todo el proceso de desarrollo de programas gira entonces alrededor de la noción de una realidad compuesta de objetos.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

14

¿Cuál es el objetivo de la programación orientada a objetos?

Su objetivo fundamental es crear fragmentos de código fuente reutilizable ya que los mismos representarán objetos específicos.

La programación por objetos permite crear programas modulares.

Si se aplica correctamente, la P.O.O. facilita el mantenimiento y modificación de programas extensos.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

15

¿Cómo podemos ver la realidad desde una perspectiva de objetos?

Un objeto puede tener características o “atributos” simples como su color, forma, altura, nombre o estar formado por la unión de otros objetos.

Además podemos decir que los objetos pueden ser “manipulados” tanto para cambiarlos en alguna forma, o utilizarlos para que lleven a cabo “acciones” que pueden o no afectar a otros objetos en el medio en que se encuentran.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

16

Mire alrededor…

Siempre se pueden identificar características y acciones asociadas a los objetos que nos rodean.

Ejemplos:– María está hablando con

Juan.– Hay un libro que tiene

páginas.– Hay un lápiz amarillo que

sirve para escribir.– El televisor está encendido.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

17

Veamos ejemplos de atributos de objetos de la vida real…

Un televisor tiene atributos como su diámetro, tipo de pantalla, marca, peso, botón de encendido, controlador de funciones como cambiar canales y volumen.

La persona a un nivel muy simplista puede ser vista como un objeto que tiene como atributos: nombre, lugar de nacimiento y fecha de nacimiento.

Un objeto más simbólico como un punto cartesiano puede ser visto como un par ordenado compuesto por la coordenada “x” y la coordenada “y”.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

18

Acciones en objetos de la vida real

El televisor puede ser encendido, apagado, cambiado de canal, y se le puede subir y bajar el volumen.

A una “persona” podemos preguntarle su nombre y su fecha de nacimiento.

Un punto cartesiano puede ser utilizado para calcular la distancia con respecto a otro punto en el plano.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

19

Lo anterior lleva a la pregunta

¿Cómo podemos crear un modelo que represente a un objeto de la vida real?

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

20

¿Cómo modelar un objeto?

Un objeto se puede representar como una composición de atributos y métodos.

Atributos

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

21

¿Qué es un atributo?

Los atributos son las características propias del objeto.

Por ejemplo:

En un televisor

tenemos. . .

Diámetro: 27”Marca:“Panafonix

”Pantalla: “plana”

Peso: 28.5 Kg.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

22

¿Qué es un método?

Los métodos son las acciones que pueden llevar a cabo o modifican a un objeto.

Por ejemplo:

En un televisor

tenemos. . . Diámetro: 27”

Marca:“Panafonix”

Pantalla: “plana”

Peso: 28.5 Kg.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

23

¿Cómo se pueden crear objetos?

Para crear objetos lo primero que hay que hacer es definir sus características en una especificación de “clase”.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

24

¿Qué es una clase?

Una clase es una descripción de las características generales que tienen en común un grupo especifico de objetos.

Una clase es como un plano con el cual se construyen objetos de un tipo específico.

Igual que con un plano de un edificio, se pueden crear diagramas de clases.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

25

¿Cómo se puede hacer un diagrama de clases?

En los últimos años se ha generalizado el uso de un lenguaje simbólico para modelar clases conocido como UML.

UML significa

“Unified Modeling Language”

o

Lenguaje unificado para modelar

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

26

Diagramas de clase utilizando UML

En UML el diagrama de una clase muestra en la parte superior el nombre de la clase, más abajo aparecen los atributos y finalmente los métodos.

Note el uso de los símbolos – , + y los paréntesis ( ) lo cual se explicará cuando sea pertinente.

Nombre

-atributo1 -atributo2

+método1( ) +método2( )

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

27

Como ya hemos visto…

La clase Televisor define objetos con los siguientes atributos: diámetro, marca, pantalla, peso.

Todo objeto de la clase Televisor puede llevar a cabo acciones como: encender, apagar, cambiar canal, subir volumen.

Televisor

-diámetro-marca-pantalla-peso

+encender() +apagar() +cambiar canal() +subir volumen()

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

28

Otro caso de modelado de una clase

Se puede modelar al perro doméstico como un animal que tiene características o atributos como su raza, dueño, tamaño, peso, edad.

Además puede llevar a cabo acciones como ladrar y morder.

?

Perro

-raza-dueño-tamaño-peso-edad

+ladrar()+morder()

EJEMPLO 1 – Definición y modelado de clases

Ir al ejemplo

EJERCICIO 1 – Definición y modelado de clases

Ir al ejercicio

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

31

¿Qué es una instancia?

Diremos que una instancia es uno de los miembros específicos de una clase.

Para crear una instancia se deben asignar valores específicos a los atributos de una clase.

Igual que con las clases, las instancias se pueden diagramar utilizando UML.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

32

Diagramas de instancia en UML

Se puede contar con diagramas de objetos donde aparece más de una instancia de cada clase.

Si no hay instancias de la clase solo aparece :Perro El diagrama de objetos es un vistazo al estado del

sistema en un momento dado, por ejemplo luego de la inicialización.

Por ejemplo, si tango es un perro en particular,

tango : Perro

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

33

Instancia de Televisor

La instancia “miTele” es un Panafonix pantalla plana de 27 pulgadas, que pesa 28.5 Kg.

miTele : Televisor

-diámetro = 27-marca = “Panafonix”-pantalla = “plana”-peso = 28.5

+encender() +apagar() +cambiar canal() +subir volumen()

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

34

Instancia de Perro

tango es un zaguate que pertenece a Melvin. Tiene 4 meses, mide 40.5 cm. y pesa 50 Kg.

tango : Perro

-raza = “zaguate”-dueño = “Melvin”-tamaño = 40.5-peso = 50-edad = 4

+ladrar()+morder()

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

35

Ejemplo de una clase y tres instancias con UML

Perro

-nombre-edad-altura-color-cantidadDePersonasMordidas-peso

+ladrar()+morder()

nerón : Perro

godo : Perro

tango : Perro

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

36

Otra forma común de visualizar una instancia

Además se pueden representar instancias como círculos, donde los métodos encierran los atributos.

La idea de este diagrama es que se visualice el hecho de que desde el exterior de la instancia, la interacción se realiza exclusivamente a través de los métodos o “interfaz”.

Se aclara que este diagrama no es UML, si no que es un diagrama más simbólico para representar la disposición y acceso a los componentes de un objeto.

Diámetro: 27”

Marca:“Panafonix”

Pantalla: “plana”

Peso: 28.5 Kg.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

37

¿Cómo se utilizan los objetos?

Para pedirle a un objeto que lleve a cabo una acción se le debe enviar un mensaje. Esto se hace utilizando el nombre de alguno de sus métodos.

Los objetos se comunican a través de su “interfaz”.

Método() InstanciaAtributos

InstanciaAtributos

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

38

¿Qué es una interfaz?

Se define como “interfaz” de un objeto, a los métodos que permiten interactuar con él.

En el diagrama se observa que la comunicación con este objeto solamente se puede llevar a cabo invocando alguno de los cuatro métodos que componen su “interfaz”.

InstanciaAtributos

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

39

¿Cómo programar por objetos?

1. Identifique los objetos involucrados en la solución del problema.

2. Identifique a cuáles clases pertenecen esos objetos y relacione dichas clases entre sí.

3. Identifique la funcionalidad y los atributos que hacen únicos a los objetos pertenecientes a cada clase.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

40

¿Cómo aprender a programar por objetos?

En este curso se estudiará de forma gradual e incremental aspectos como:– ¿Cómo se pueden definir los atributos de una

clase de objetos?– ¿Cómo se puede crear una instancia de esa

clase?

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

41

¿Cómo aprender a programar por objetos? (continuación)

– ¿Cómo se puede modificar u obtener la información que hay dentro de un objeto?

– ¿Cómo se puede hacer que un objeto lleve a cabo acciones más complejas?

– Y finalmente: ¿cómo se pueden combinar en formas más complejas un grupo de objetos para llevar a cabo una tarea de mediana complejidad?

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

42

Lenguajes orientados a objetos

Un lenguaje orientado a objetos es aquel que ofrece mecanismos tendientes a maximizar la reutilización de código confiable, modular y bien probado.

Las clases son un medio de abstracción, encapsulamiento, y ocultamiento.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

43

¿A qué se refiere el término abstracción al hablar de clases?

Abstraer es obtener las características que tienen en común todos los elementos que pertenecen a una clase.

Mediante la abstracción se logran definir cuales son los métodos y atributos suficientes y necesarios para reconocer a un objeto como miembro o no de una clase.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

44

¿Qué es el encapsulamiento?

El encapsulamiento es la característica mediante la cual se logra dar identidad a los objetos.

Por ejemplo: una mesa es más que una tabla y cuatro patas, ya que se puede manipular como si fuera algo con su propia identidad.

La nueva clase cobra identidad y es más que las partes que la conforman.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

45

¿Por qué es importante el ocultamiento?

El ocultamiento permite esconder la forma en que están hechos “por dentro” los objetos.

Si alguien sabe cuales son los métodos de un objeto y “aprende” a manejarlo, no le importa si el objeto cambia por dentro siempre y cuando no cambie sus métodos o “interfaz”.

Por ejemplo: para manejar un carro se necesita saber como acelerar, girar, frenar, y hacer cambios. El tipo de aceite que utiliza el carro puede cambiar sin afectar la forma en que se maneja.

Bases para la programación por objetos

Java

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

47

¿Qué es Java?

Java es un lenguaje diseñado para la programación por objetos.

Java inicia como un proyecto de investigación de la compañía Sun Microsystems en 1991.

El lenguaje se anunció oficialmente en 1995. Parte de la sintaxis de Java se basa en los

lenguajes de programación C y C++.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

48

Ventajas de Java

Las principales ventajas del lenguaje Java son las siguientes:– Orientado a objetos.– Simple y familiar.– Robusto y seguro.– Portable (arquitectura neutral).– Apto para programación en ambientes

distribuidos.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

49

Simple y familiar

Es un lenguaje de poca complejidad en cuanto a escritura y lectura del mismo.

Tiene una sintaxis similar a la de otros lenguajes como C y C++, lo cual lo hace familiar.

Utiliza la metodología de programación orientada a objetos para aplicaciones distribuidas (trabajo con redes).

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

50

Portable

Java es independiente de la plataforma utilizada.

Intel iMac Intel Sun

Linux Mac Windows Solaris

Máquina Virtual de Java

Aplicación de Java

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

51

Compilador de Java

Código fuenteJava

“Bytecode”de Java

El código se mueve a través de la

red o el sistema de

archivos

Cargador de clasesVerificador de código

Máquinavirtual de

Java

Compilador“just-intime”

Sistema operativo

Hardware

Tie

mp

o d

e c

om

pilació

n Tie

mp

o d

e e

jecu

ció

n

Compilación y Ejecución en Java

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

52

Estructura de una aplicación básica en Java

El método principal o main() es el punto de entrada inicial de la aplicación. Este método es llamado cuando la aplicación es ejecutada.// import o packagepublic class NombreClase{ // variables de instancia y métodos.

public static void main (String args []){// variables locales e instrucciones.System.exit(0);

}}

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

53

¿Qué es un compilador?

Las instrucciones de un programa o “código fuente” deben ser convertidas a instrucciones que puedan ser ejecutadas por la máquina.

Lo anterior es una función del compilador.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

54

¿Qué es un compilador? (continuación)

También se puede compilar y ejecutar paso a paso con el compilador de Java de Sun MicroSystems conocido como jdk o Java Development Kit del “Java Standard Edition” en caso de no tener ambiente gráfico o de tener una computadora de menor capacidad.

EJEMPLO 2 – Compilación y ejecución de un programa

Ir al ejemplo

EJEMPLO 3 – Compilación y ejecución de un programa utilizando

un ambiente integrado para desarrollo

Ir al ejemplo

EJEMPLO 4 – Ciclo de resolución de un problema

Ir al ejemplo

EJERCICIO 2 – Identificación de errores de sintáxis

Ir al ejercicio.

EJERCICIO 3 – Aplicación del ciclo de resolución de un problema

Ir al ejercicio.