Notas
Presentación
Esquema
1
Bases para la programación por objetos
  • Teoría básica
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…
3
Ciclo de desarrollo de un programa
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.
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.
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.
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 C
  • 4) 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 mayor
  • 8) 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
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.


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.
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.
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.
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.
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.
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.
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.
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.
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”.
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.
19
Lo anterior lleva a la pregunta
  • ¿Cómo podemos crear un modelo que represente a un objeto de la vida real?
20
¿Cómo modelar un objeto?
  • Un objeto se puede representar como una composición de atributos y métodos.
21
¿Qué es un atributo?
  • Los atributos son las características propias del objeto.
  • Por ejemplo:
  • En un televisor
  • tenemos. . .
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. . .


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


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.


29
EJEMPLO 1 – Definición y modelado de clases
  •  Ir al ejemplo
30
EJERCICIO 1 – Definición y modelado de clases
  • Ir al ejercicio
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.
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,
33
Instancia de Televisor
  • La instancia “miTele” es un Panafonix pantalla plana de 27 pulgadas, que pesa 28.5 Kg.


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


35
Ejemplo de una clase y tres instancias con UML
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.
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”.
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”.
39
¿Cómo programar por objetos?
  • Identifique los objetos involucrados en la solución del problema.
  • Identifique a cuáles clases pertenecen esos objetos y relacione dichas clases entre sí.
  • Identifique la funcionalidad y los atributos que hacen únicos a los objetos pertenecientes a cada clase.
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?
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?
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.
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.


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.
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.
46
Bases para la programación por objetos
  • Java
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++.
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.
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).
50
Portable
  • Java es independiente de la plataforma utilizada.
51
Compilación y Ejecución en Java
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 package
    • public class NombreClase{
    •     // variables de instancia y métodos.
    • public static void main (String args []){
    • // variables locales e instrucciones.
    • System.exit(0);
    • }
    • }
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.


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.
55
EJEMPLO 2 – Compilación y ejecución de un programa
  • Ir al ejemplo
56
EJEMPLO 3 – Compilación y ejecución de un programa utilizando un ambiente integrado para desarrollo
  • Ir al ejemplo
57
EJEMPLO 4 – Ciclo de resolución de un problema
  • Ir al ejemplo
58
EJERCICIO 2 – Identificación de errores de sintáxis
  • Ir al ejercicio.
59
EJERCICIO 3 – Aplicación del ciclo de resolución de un problema
  • Ir al ejercicio.