Publicado el 23 de Enero del 2019
1.563 visualizaciones desde el 23 de Enero del 2019
1,7 MB
64 paginas
Creado hace 21a (05/03/2004)
Representación de Datos y Aplicaciones
Tema 2
Tema 2: Conceptos básicos de
Programación Orientada a Objetos
Contenidos
1. Ciclo de vida de un programa
2. ¿Qué es una clase?
3. Composición de clases
4. Herencia de clases
5. ¿Qué es Java?
1 Ciclo de vida de un programa
El ciclo de vida de un programa, también llamado proceso de desarrollo, es el conjunto de
etapas en el desarrollo y utilización de una clase.
1. Especificación: definición de qué va a hacer un programa.
Ejemplo: el programa debe representar un cajero automático de un banco en el que se
pueda:
• consultar saldo
• extraer dinero
•
ingresar dinero
En esta fase se debe pensar detenidamente en la funcionalidad que se quiere del sistema,
en sus casos de uso, etc. En el ejemplo anterior, ¿se permiten operaciones sólo con
tarjeta o también con libreta? ¿Se permite operar a clientes de otros bancos o sistemas
de tarjetas? etc.
2. Diseño: basándose en la información de la fase de especificación, se plantea una
solución que determina:
• qué clases van a hacer falta para representar el problema
• qué comportamiento (operaciones) van a tener esas clases
• cómo se relacionan entre ellas
En esta fase se utilizan muchas veces diagramas (ver Figura 1).
3. Codificación: también llamada implementación. Una vez está claro cómo se plantea la
solución, hay que codificar las clases. Para ello, hay que basarse en los principios de:
Cajero
autorizaUsuario
consultaSaldo
extraeDinero
ingresaDinero
Tarjeta
compruebaPin
cambiaPin
dameCuenta
Cuenta
extrae
ingresa
dameSaldo
dameMovimientos
Figura 1: Diagrama de clase fase diseño
Dep. Ing. Telemática, UC3M
1
Representación de Datos y Aplicaciones
Tema 2
• Claridad: el objetivo es que el código sea fácil de entender por el diseñador y por
otras personas, para facilitar su depuración, mantenimiento, etc. Para ello, se
cuenta con reglas de estilo, de nombrado, de indentación, realización de
documentación, etc.
• Eficiencia: se trata de buscar soluciones que, para obtener el mismo resultado,
consumar el menor número de recursos posibles. Por recursos se entiende
fundamentalmente la memoria y el tiempo de CPU.
4. Prueba: se compila y ejecuta el programa para ver si cumple la especificación. Si no lo
hace, puede haber errores de codificación o de diseño y hay que volver hacia atrás. ¡Esta
fase puede ocupar un 70% del tiempo total de programación! No la descuidéis.
• Diseñar y codificar las pruebas a la vez que se diseña y codifica el programa
• Probar el mayor número de casos posibles
• Probar a la vez que se va codificando, de menor a mayor
- Cada operación de una clase
- La clase completa
- La integración de varias clases
5. Mantenimiento: una vez se pone el programa en funcionamiento, no termina su ciclo
de vida
• se pueden detectar nuevos errores
• se puede querer cambiar o ampliar su funcionalidad
Por ello es muy importante que el programa sea claro, legible y modular:
•
•
los cambios no afectarán a todo el programa
la persona encargada del mantenimiento probablemente no sea la misma que lo
programó
2 ¿Qué es una clase?
La clase es un concepto fundamental de la Programación Orientada a Objetos (POO).
2.1 Definición de clase
Una clase agrupa objetos que son idénticos (tienen los mismos atributos y ofrecen las
mismas operaciones) salvo en su estado concreto en un momento dado.
• Los atributos representan los datos internos del objeto.
• Las operaciones (llamadas métodos en POO) representan su comportamiento: los
mensajes que pueden recibir y procesar de otros objetos.
Ejemplo: vamos a representar mediante objetos a 3 personas, caracterizadas por su nombre,
edad, y profesión. Queremos además que los objetos sean capaces de responder a mensajes
que pregunten por su nombre, por su edad o por su profesión.
José, 23 años, carpintero
Laura, 37 años, estudiantes
Cristina, 19 años, estudiante
Dep. Ing. Telemática, UC3M
2
Representación de Datos y Aplicaciones
Tema 2
Clase
Persona
nombre
edad
profesión
dameNombre
dameEdad
dameProfesión
Persona
José
23
carpintero
dameNombre
dameEdad
dameProfesión
Objetos
Persona
Laura
37
administrativa
dameNombre
dameEdad
dameProfesión
Persona
Cristina
19
estudiante
dameNombre
dameEdad
dameProfesión
Figura 2: Representación de clases y objetos
Los tres objetos anteriores van a ser instancias de la clase Persona, que se caracteriza por sus
atributos (nombre, edad, profesión) y por los métodos que ofrece (dameNombre, dameEdad,
dameProfesión), es decir, los mensajes a los que van a ser capaces de responder los objetos
de dicha clase.
Más ejemplos: clases para representar circuitos electrónicos, vehículos de motor,
asignaturas, etc.
Cada una de las instancias de una clase tiene su propio estado y se puede representar como
una entidad única en el programa. A esta entidad única se le llama objeto. Cada objeto
pertenece a una clase particular que define sus características y su comportamiento. Dada
una clase, se pueden crear tantos objetos de esa clase como se quieran.
Una aplicación (un programa) se compone de una serie de clases, de las cuales se crean una
serie de instancias (objetos) que interactúan entre sí mandándose mensajes (es decir,
llamando a los métodos de los objetos).
2.2 Interfaz e implementación de una clase
• El interfaz de una clase define el tipo de peticiones (operaciones) que se le pueden hacer a
objetos de esa clase (ver Figura 3).
- El interfaz describe qué hace un objeto de una clase
- A un usuario de una clase sólo le hace falta conocer su interfaz
• La implementación es el código que se programa para satisfacer las peticiones del
interfaz.
- La implementación describe cómo responde un objeto a las peticiones
- La implementación no necesita ser pública
- La implementación incluye características internas 8atributos) y el código de las
operaciones
Dep. Ing. Telemática, UC3M
3
Representación de Datos y Aplicaciones
Tema 2
Nombre
Bombilla
enciende()
apaga()
aumentaIntensidad()
disminuyeIntensidad()
Interfaz
Figura 3: Interfaz de una clase
Los diagramas de clase UML son muy usados para representar gráficamente las clases.
• A veces se omiten los atributos o los atributos y operaciones (métodos), según el nivel de
detalle o de visibilidad que se quiera representar en el diagrama
Nombre
Persona
Atributos
Métodos
nombre
edad
profesión
dameNombre
dameEdad
dameProfesión
Figura 4: Diagrama de clase UML
3 Composición de clases
La composición es un mecanismo por el que se pueden crear clases complejas agregando
objetos de clases ya existentes.
• Se la conoce también con relación “tiene-un”
• Permite reutilizar código
Coche
Motor
Figura 5: Composición de clases
Dep. Ing. Telemática, UC3M
4
Representación de Datos y Aplicaciones
Tema 2
Base
Derivada1
Derivada2
Figura 6: Herencia de clases
La nueva clase (Coche) tiene un objeto miembro (un atributo) que será de la clase Motor.
Más ejemplos de composición de clases: una asignatura tiene un profesor coordinador, una
asignatura tiene varios alumnos, un equipo de audio tiene altavoces, etc.
Mediante la composición se permite realizar una programación más modular:
• Los objetos miembros y las clases a las que pertenecen no necesitan ser visibles para
clientes de la clase compuesta.
• Aunque cambie la implementación de la clase del objeto miembro, no tengo por qué
cambiar la implementación de la clase compuesta (siempre que no cambie la
interfaz).
4 Herencia de clases
La herencia es un mecanismo para definir similitud entre clases, en el que se enlazan una
clase base y una o varias clases derivadas (ver Figura 6).
La clase Base contiene todas las características (atributos) y comportamientos (métodos)
comunes, compartidas por las clases derivadas (el núcleo de las clases “similares”)
Las clases Derivadas expresan distintas formas en las que este núcleo se puede realizar (ver
ejemplo en Figura 7).
Forma
dibuja()
borra()
mueve()
obtenColor()
ponColor()
Círculo
Cuadrado
Triángulo
Figura 7: Ejemplo de herencia de clases
Dep. Ing. Telemática, UC3M
5
Representación de Datos y Aplicaciones
Tema 2
Cuando se hereda de una clase Base, se crea una nueva clase que:
• Contiene todos los atributos de la clase Base
• Contiene el interfaz de la clase Base
La herencia se llama también relación “es-un”, porque un objeto de la clase Derivada es
también un objeto de la clase Base (un Círculo es también una Forma).
4.1 Extensión de clases
La clase Derivada puede añadir nuevos métodos y/o atributos que no serán parte de la clase
Base, sino una extensión a la misma
Forma
…
Círculo
Cuadrado
Triángulo
volteaHorizontal()
volteaVertical()
Figura 8: Ejemplo de extensión de clase
4.2 Sobreescritura de métodos
Otra posibilidad de diferenciar entre las clases derivadas es sobrescribir alguno de los
métodos. En este caso, las clases derivadas tendrán la misma interfaz pero una
implementación distinta.
Forma
dibuja()
…
Círculo
dibuja()
Cuadrado
Triángulo
Figura 9: Ejemplo de sobreescritura de método
Dep. Ing. Telemática, UC3M
6
Representación de Datos y Aplicaciones
Tema 2
5 ¿Qué es Java?
Java es un lenguaje de Programación Orientada a Objeto publicado por Sun Microsystems
en 1995. Actualmente, la plataforma Java consta de varios elementos:
• El lenguaje de programación Java propiamente dicho
• Un conjunto de bibliotecas estándar que debe existir en cualquier plataforma (Java API)
• Un conjunto de herramientas para el desarrollo de programas:
- Compilador a bytecode (javac)
- Generador de documentación (javadoc)
- Ejecución de programa (intérprete del by
Comentarios de: Tema 2: Conceptos básicos de Programación Orientada a Objetos (0)
No hay comentarios