Poo PDF
Poo PDF
de
Programación
SESIÓN 04: “Introducción a la Metodología
de Programación Orientada a Objetos”
www.usat.edu.pe
www.usat.edu.pe
Sesión 04: “Introducción a la Metodología de
Programación Orientada a Objetos”
Objetivos:
Comprender los fundamentos teóricos de las Metodologías de Programación y la
Programación Orientada a Objetos (POO).
Actividades:
Introducción
• Control de asistencia
• Propósito de la sesión
Desarrollo
• Metodologías de Programación
• Fundamentos de POO
Cierre
• Presentar conclusiones de la sesión.
• Brindar información para la próxima sesión.
Recursos:
Aula Virtual, Plataforma Zoom, PPT, Netbeans
2 www.usat.edu.pe
Introducción
Control de
asistencia
3 www.usat.edu.pe
Introducción
Propósito de la sesión:
Objetivo de la sesión:
Comprender los fundamentos teóricos de las metodologías de
programación y la programación orientada a objetos.
Contribuye al logro
Contribuye al logro
4 www.usat.edu.pe
Introducción
Contenidos:
Metodologías de Programación:
ü Concepto de Metodología de Programación
ü Importancia de las Metodologías de Programación
ü Tipos de Metodologías de Programación
5 www.usat.edu.pe
Metodologías de Programación
Concepto de metodología de
programación
Las metodologías de programación,
también conocidas como paradigmas
de programación, son reglas, marcos
de referencia, modelos, directrices o
patrones que definen la forma como
solucionar un problema. Es decir
influyen en la manera como diseñamos
una solución y como escribimos un
programa de computadora.
6 www.usat.edu.pe
Metodologías de Programación
Importancia de las Metodologías de Programación
Si no siguiéramos una metodología de programación, tendríamos un diseño como el siguiente:
Inicio Síntomas:
Paso 1 • Creación libre de bucles
Paso 2 • Interrupción del flujo normal de los bucles.
• Uso frecuente de sentencias:
Goto
Según sea
un criterio Break
Ir A … Exit
• No se usa necesariamente Procedimientos y
Funciones.
• Uso innecesario de variables Globales.
Paso 3
Paso 4
Fin
7 www.usat.edu.pe
Metodologías de Programación
Importancia de las Metodologías de Programación
Ejemplo de programación en C sin metodología.
Programación sin
metodología
8 www.usat.edu.pe
Metodologías de Programación
Importancia de las Metodologías de Programación
Seguir una metodología de programación es muy importante debido a que si no seguimos
una, podría ocurrir lo siguiente:
9 www.usat.edu.pe
Metodologías de Programación
10 www.usat.edu.pe
Metodologías de Programación
Tipos de metodologías de programación
Paradigma Estructurado:
11 www.usat.edu.pe
Metodologías de Programación
…Paradigma Estructurado:
• Bajo este paradigma, se puede programar modularmente, dividiendo el programa en módulos, los
cuales se implementan como procedimientos o funciones.
Comunicación
12 www.usat.edu.pe
Metodologías de Programación
…Paradigma Estructurado:
13 www.usat.edu.pe
Metodologías de Programación
…Tipos de metodologías de programación
Paradigma Orientado a Objetos:
14 www.usat.edu.pe
Metodologías de Programación
Fecha
- dia: int
Atributos (datos)
- mes: int
- año: int
15 www.usat.edu.pe
Metodologías de Programación
…Paradigma Orientado a Objetos:
ApRectangulo Rectangulo
- base: float
- altura: float
Relación
De Dependencia + setBase (b: float)
+ main (arg[]: String)
+ setAltura (h: float)
+ calcularArea(): float
16 www.usat.edu.pe
Metodologías de Programación
…Paradigma Orientado a Objetos:
17 www.usat.edu.pe
Programación Orientada a Objetos
• Concepto
18 www.usat.edu.pe
Programación Orientada a Objetos
• …Concepto
• La Programación Orientada a Objetos es una metodología o paradigma de
programación que utiliza a los Objetos como elementos fundamentales para
construir un programa de computadora. Surge en los años 70 y a diferencia del
paradigma o metodología de programación estructurada, que se centra en el
proceso, este paradigma se centra en el objeto que esta siendo afectado. En
esta metodología, después que hemos identificado el objeto, tenemos que
identificar sus atributos (características, propiedades o estado del objeto) y sus
métodos (comportamiento, operaciones o acciones que realiza el objeto).
19 www.usat.edu.pe
Programación Orientada a Objetos
• Objeto
• El objeto es una instancia de una clase que combina datos y procedimientos, un objeto es
simplemente una variable de un tipo de clase, y para diferenciar las variables de tipo clase de
las variables de otro tipo, se utiliza el término objeto [3].
• El objeto es una entidad que tiene unos atributos particulares, las propiedades, y unas formas
de operar sobre ellos, los métodos [4].
• Los objetos son cosas tangibles o intangibles que intervienen en el sistema que estamos
analizando y es relevante para éste. Los objetos tienen unos atributos que representan sus
características, propiedades o su estado y unos métodos que representan su comportamiento o
acciones que puede realizar.
Ejemplo: Plumón color negro, Plumón color azul, Celular de marca Motorola, etc.
20 www.usat.edu.pe
Programación Orientada a Objetos
• …Objeto
• Shaer, Mellor y Yourdon definen categorías que nos pueden ayudar a identificar
objetos :
21 www.usat.edu.pe
Programación Orientada a Objetos
• Atributo
• Los atributos son las variables que se declaran al principio de la clase, fuera de los
métodos. Estas variables son compartidas por todos los métodos de la clase [4].
• Los atributos son las características, propiedades, estado o datos de los objetos. Se dice
que el estado del objeto es el valor que tienen todos sus atributos en un instante dado.
Partes:
- Los atributos tienen un especificador de acceso, el cual puede ser público (+),
privado (-) , protegido(#) o amistoso.
- Los atributos tienen un tipo de dato.
- Los atributos tendrán un nombre
- Ejemplo en Java: private float base;
22 www.usat.edu.pe
Programación Orientada a Objetos
• Método
• Los métodos son las operaciones que muestran el comportamiento del objeto [6].
• Un método se implementa en una clase y determina cómo tiene que actuar el objeto
cuando recibe el mensaje vinculado con ese método. A su vez, un método puede también
enviar mensajes a otros objetos solicitando una acción o información [4].
Partes:
- Los métodos tienen un especificador de acceso, el cual puede ser público (+),
privado (-) , protegido(#) o amistoso.
- Los métodos pueden retornar un valor o no.
- Los métodos tendrán un nombre.
- Los métodos pueden tener parámetros.
- Los métodos tienen una definición (cuerpo del método).
- Ejemplo en Java:
public float calcularArea (float base, float altura)
{ // Definición del método
}
23 www.usat.edu.pe
Programación Orientada a Objetos
• Clase
24 www.usat.edu.pe
Programación Orientada a Objetos
• …Clase
Dos métodos u operaciones típicas en cualquier clase son:
- Constructor: Es un método especial de una clase que es llamado automáticamente siempre que
se crea un objeto de la misma. Se encarga de la creación del objeto e inicializa su estado. Es decir
inicializa los atributos del objeto, ya sea a sus valores iniciales que ha definido el programador o
si no los hubiera los inicializa a los valores predeterminados del sistema (atributos numéricos: 0;
atributos de carácter: ‘\0’; referencias a objetos: null). El nombre de este método constructor en
Java suele ser el mismo de la clase a la cual sirvén.
El constructor por omisión es un constructor sin parámetros que será invocado cada vez que se
construya un objeto. Pero el programador puede agregar otros métodos constructor.
- Destructor: Es un método que se ejecuta automáticamente cada vez que se destruye un objeto,
en el caso de java es el método finalize. Cuando un objeto es destruido, se llama al método
finalize, y luego el recolector de basura se encarga de eliminar el objeto, liberando la memoria
ocupada. Un objeto es destruido cuando se eliminan todas las referencias al mismo, una
referencia a un objeto puede ser eliminada porque el flujo de ejecución salga fuera del ámbito
donde esta declarada, o porque explícitamente se le asigna el valor null. A diferencia de los
constructores sólo se puede definir un destructor
25 www.usat.edu.pe
Programación Orientada a Objetos
• Paquete de clases
• Los paquetes son un mecanismo utilizado por java que permite organizar las
clases de una manera estructurada y jerárquica. Básicamente, un paquete es un
directorio en el que se almacenan los archivos class con los byte codes de la
clase; un paquete puede a su vez estar compuestos de otros subpaquetes [4].
26 www.usat.edu.pe
Programación Orientada a Objetos
• …Paquete de clases
Ejemplo de paquetes:
java.lang : Donde encontraremos a la clase System, Math, Byte, Short, Integer,Long, Float, Double, String, etc.
El compilador de java incluye automáticamente este paquete.
java.io : Donde encontraremos a la clase BufferedReader, InputStreamReader, IOException, etc.
java.util : Donde encontraremos a la clase Scanner, Date, Random, Arrays, Vector, etc.
javax.swing: Donde encontraremos a la clase JOptionPane, etc.
Cuando en lugar del nombre de la clase colocamos * significa que importaremos todas las clases de ese
paquete. Ejemplo:
import java.lang.*;
import java.io.*;
27 www.usat.edu.pe
Programación Orientada a Objetos
• Mensaje.
Un mensaje es la forma como se comunican los objetos entre sí. Se dice que son ordenes que
se le envía a un objeto para que haga algo. Es decir es una orden que hace que un objeto
ejecute algunos de sus métodos [8].
nombreObjeto.nombreMetodo (parámetros)
28 www.usat.edu.pe
Programación Orientada a Objetos
• Diagrama de clases – UML (Lenguaje de Modelado Unificado)
nombrePaquete::NombreClase
Nombre
Atributos
Especificador de acceso: Público (+), Privado (-), Protegido (#), por omisión (si no se indica nada)
Alcance de los miembros (atributos y métodos) de una clase:
- De clase: No se necesita crear un objeto para acceder a los atributos y métodos de la clase. Son compartidos por
todos los objetos creados de esa clase. En el diagrama se indica subrayando todo el atributo o todo el método, se
caracteriza por que el valor de los atributos permanece estático, es el mismo para todos los objetos que se creen, se
usa por ejemplo para llevar un control de la cantidad de objetos creados de una clase determinada. En java se indica
con la palabra static
- De instancia o de objeto: Se necesita crear un objeto para acceder a los atributos y métodos de la clase. En el
diagrama se indica esto no subrayando los atributos o métodos.
29 www.usat.edu.pe
Programación Orientada a Objetos
Rectangulo java.lang::Math
+ setBase (b: float) + pow (x:double, y:double): double Los miembros de la clase
+ sqrt (x: double) : double Math (atributos y métodos)
+ setAltura (h: float)
+ ceil (x: double): double tienen alcance de clase; por
+ getBase (): float eso en el diagrama aparecen
+ floor (x: double): double
+ getAltura(): float subrayados
+ round (x: double) : long
+ calcularArea(): float
30 www.usat.edu.pe
Programación Orientada a Objetos
• …Diagrama de clases –UML (Lenguaje de Modelado Unificado)
31 www.usat.edu.pe
Programación Orientada a Objetos
• …Diagrama de clases –UML (Lenguaje de Modelado Unificado)
Relaciones :
ClaseIndependiente
1.- Dependencia:
ClaseDependiente
Rectángulo
ApRectángulo
32 www.usat.edu.pe
Programación Orientada a Objetos
…Diagrama de clases –UML (Lenguaje de Modelado Unificado)
…Dependencia
java.lang::System java.lang::String
java.util::Scanner
java.lang::Math Circulo
+ PI: double ApCirculo
- radio: float
33 www.usat.edu.pe
Programación Orientada a Objetos
• …Diagrama de clases –UML (Lenguaje de Modelado Unificado)
2.- Herencia o Generalización: Persona
ClasePadre
Clase Padre
Clase Base
Super Clase
Natural Jurídica
La clase padre encapsula atributos y métodos comunes de las clases hijas, y la clase hija hereda (reutiliza)
estos atributos y métodos de la clase padre si el especificador de acceso lo permite (+ y #)
34 www.usat.edu.pe
Programación Orientada a Objetos
• …Diagrama de clases –UML (Lenguaje de Modelado Unificado)
… Herencia o Generalización
Trabajador
Figura2D
Docente Administrativo
TiempoCompleto PorHoras
35 www.usat.edu.pe
Programación Orientada a Objetos
Vehículo
Ahorros Corriente
36 www.usat.edu.pe
Programación Orientada a Objetos
• …Diagrama de clases –UML (Lenguaje de Modelado Unificado)
… Herencia o Generalización
Persona
A diferencia de los
Profesor Investigador ejemplos anteriores
que heredaban de una
sola clase padre
(Herencia Simple), este
ejemplo se trata de
Herencia Múltiple,
donde la clase hija
(ProfesorInvestigador)
hereda de varios
ProfesorInvestigador padres (Investigador y
Profesor).
Nota: Java no soporta
herencia múltiple
37 www.usat.edu.pe
Programación Orientada a Objetos
• …Diagrama de clases –UML (Lenguaje de Modelado Unificado)
3.- Asociación
Clase2
Clase1
Alumno
Escuela
Multiplicidad: 1 1..*
1..* : Uno a muchos
0..* : Cero a muchos
M : Indicar un número
38 www.usat.edu.pe
Programación Orientada a Objetos
arrancar ()
detenerMotor()
Coche
arrancar()
detenerMotor()
39 www.usat.edu.pe
Programación Orientada a Objetos
nombreObjeto:NombreClase
Ejemplo:
40 www.usat.edu.pe
Programación Orientada a Objetos
Actividad:
Resolver
cuestionario
www.usat.edu.pe
Cierre
• Conclusiones:
- Las 2 metodologías más conocidas e implementadas son las metodologías de programación
estructurada (año 60’s) y la metodología de programación orientada a objetos (año 70’s).
- La principal diferencia entre la metodología de programación estructurada y la orientada a objetos es
que la primera se centra en el proceso y trabaja los datos separados de éstos; mientras que la
orientada a objetos se centra en los objetos bajo estudio y por medio de estos objetos mantiene
encerrados o encapsulados a los datos y a los procesos.
- Los términos claves en la metodología de programación orientada a objetos son: Objeto, Clase y
Herencia.
- Para poder crear objetos, es necesario que existan primero las clases, debido a que los objetos son
instancias de las clases; es decir se crean a partir de éstas. Estas clases pueden estar agrupadas en unas
carpetas o directorios llamados paquetes.
- Todos los objetos tienen atributos (características) y métodos (comportamiento, operaciones)
- Para poder hacer diagrama de clases podemos usar el Lenguaje de Modelado Unificado (UML).
• Próxima sesión:
– Introducción a la programación orientada a objetos en Java.
42 www.usat.edu.pe
Referencias
[1] Grady Booch, Análisis y diseño orientado a Objetos con Aplicaciones, Segunda Ed. México: Addison
Wesley, 1995.
[2] Shari Lawrence Pfleeger, Ingeniería de Software: Teoría y Práctica, Buenos Aires: Perarson Educación,
2002.
[3] J. Castañeda, Desarrollo de Aplicaciones en Java, Primera Ed. Perú: Ritisa Graff, 2007.
[4] Fco. Javier Ceballos Sierra, Java 2: Curso de Programación, Segunda Ed., México D.F.: Alfaomega
Grupo Editor, 2003.
[5] Bertrand Meyer, Construcción de un Software Orientado a Objetos, Madrid: Pretince Hall, 1999.
[6] Rogers Pressman, Ingeniería de Software: Un enfoque práctico, México D.F.: Mc Graw-Hill, 2005.
[7] Alfredo Weitzenfeld, Ingeniería de Software Orientada a Objetos con UML, Java e Internet, México:
Thomson. Learnign, inc., 2005.
[8] Luis Joyanes, Fundamentos de Programación I y algoritmos, estructuras de datos y objetos I, Tercera
Ed., España: Madrid, MgGraw – Hill, 2003.
43 www.usat.edu.pe
Ing. Héctor Miguel Zelada Valdivieso
[email protected]
http://www.facebook.com/usat.peru
https://twitter.com/usatenlinea
https://www.youtube.com/user/tvusat
https://plus.google.com/+usateduperu
www.usat.edu.pe