Tema 3: Programación orientada a objetos (I)

Anuncio
Tema 3: Programación orientada a objetos (I)
‰
‰
‰
‰
‰
‰
‰
Ventajas del enfoque orientado a objetos
Clases y Objetos
Métodos y Mensajes
Algoritmos y Sentencias
Construcción de software orientado a objetos
Búsqueda de las clases
Comenzando a programar en Java
© F.Escolano & M.I.Alfonso
PG -
1
Ventajas del enfoque orientado a objetos (I)
‰ La calidad como objetivo de la producción de
software
‰ ¿Qué es la calidad?
Conjunto de características que debe presentar un
producto software (factores internos y externos)
Corrección
Robustez
Fiabilidad
Extensibilidad
Reutilización
Eficiencia
Portabilidad
Facilidad de uso
‰ El enfoque orientado a objetos favorece la
© F.Escolano & M.I.Alfonso
calidad
PG -
2
1
Clases y Objetos
‰ Sistema orientado a objetos =
Conjunto de OBJETOS, pertenecientes a alguna CLASE,
que se comunican mediante MENSAJES
‰ ¿Qué es un objeto?
Es una entidad observada por el sistema, que encapsula
un conjunto de OPERACIONES y un ESTADO
‰ ¿Qué es una clase?
Es una ABSTRACCIÓN de las propiedades comunes y
comportamiento de un conjunto de objetos
© F.Escolano & M.I.Alfonso
PG -
3
Objetos (I)
‰ Representación de un objeto:
nombreObjeto: clase
Identificación
atributo1= valor_atributo
atributo2= valor_atributo
...
attributoN= valor_atributo
Propiedades
operación1(parámetros)
operación2(parámetros)
...
operaciónM(parámetros)
Definen la estructura
Determinan el ESTADO
Servicios
Definen el comportamiento
Determinan la INTERFAZ
© F.Escolano & M.I.Alfonso
PG -
4
2
Objetos (II)
Clase a la que
pertenece
‰ Ejemplo de objeto:
empleado: Trabajador
nombre= Marcelo
fecha_nacim = 25/12/67
sueldo = 150.000
departamento = bancario
calcular_edad()
aumentar_sueldo()
cambiar_depto()
TODO objeto es instancia
de alguna CLASE
Instancia = representa a un
objeto particular,
diferente de otro
© F.Escolano & M.I.Alfonso
5
PG -
Objetos (III)
‰ Relación de una clase con sus instancias:
(objeto)
(objeto)
(clase)
daphne:Persona
shaggy: Persona
(objeto)
Persona
freddy: Persona
(objeto)
velma:Persona
© F.Escolano & M.I.Alfonso
PG -
6
3
Clases (I)
‰ Representación de una clase:
NombreClase
atributo1: tipo_atributo
atributo2: tipo_atributo
...
attributoN= tipo_atributo
operación1(parámetros)
operación2(parámetros)
...
operaciónM(parámetros)
Identificación
Propiedades
Comunes a todos los
objetos de la clase (*)
Servicios
Ocultan la implementación
(*)
© F.Escolano & M.I.Alfonso
PG -
7
Clases (II)
‰ Ejemplo de clase:
Animal
peso
altura
color
numeroDePatas
comer()
moverse()
dormir()
león: Animal
(objeto instancia)
caballo: Animal
(objeto instancia)
rana: Animal
(objeto instancia)
© F.Escolano & M.I.Alfonso
objetos de
clase Animal
PG -
8
4
Métodos y Mensajes (I)
‰ Los MÉTODOS determinan el comportamiento de los
objetos
‰ Los prototipos de los métodos determinan la
INTERFAZ del objeto
Conocer la interfaz de un objeto es indipensable para
poder comunicarnos con él
‰ La comunicación entre objetos se lleva a cabo
mediante MENSAJES
‰ MENSAJE = llamada a un método de un objeto
Un mensaje es una petición a un objeto para la obtención
de algún comportamiento deseado del mismo
© F.Escolano & M.I.Alfonso
PG -
9
Métodos y Mensajes (II)
‰ Esquema del envío de un mensaje
puerta
mensaje
robot
puerta.abrir( )
métodos:
abrir( )
cerrar( )
© F.Escolano & M.I.Alfonso
PG -
10
5
Algoritmos y Sentencias (I)
‰
¿Qué es un algoritmo?
Es una ennumeración precisa y no ambigua de los pasos
(sentencias) que hay que seguir para resolver un problema
‰
Ejemplo de algoritmo para realizar una llamada de
teléfono
1.
2.
3.
4.
5.
6.
Buscar en nuestra agenda el número de teléfono
Descolgar al auricular del teléfono
Esperar el tono de marcado
Marcar el número de teléfono
Hablar con nuestro interlocutor
Colgar el auricular
© F.Escolano & M.I.Alfonso
PG -
11
Algoritmos y Sentencias (II)
‰
Otro ejemplo
algoritmo entrar_habitacion()
robot
mano= brazo_articulado
posición_inicial= fuera
posición_final= nil
levantar_brazo( )
bajar_brazo ( )
apoyar_brazo ( )
empujar( )
adelante( )
parar( )
entrar_habitacion( )
levantar_brazo( );
apoyar_brazo ( );
puerta.abrir( );
empujar( );
bajar_brazo ( );
adelante( );
parar( );
posición_final = dentro;
© F.Escolano & M.I.Alfonso
PG -
12
6
Algoritmos y Sentencias (III)
‰
Tipos de sentencias
– Llamadas a métodos
provocan un comportamiento del objeto o un cambio de estado
en el mismo. Ejemplo: puerta.abrir
– Sentencias de asignación
proporcionan un valor a una variable. Tienen la forma
variable = valor. Ejemplo: posicion_inicial = dentro
– Sentencias de control
Permiten alterar el flujo secuencial de ejecución del algoritmo
• Condicionales
–
Ejemplo: if (posicion_inicial = fuera) then entrar_habitacion()
• Repetición
–
Ejemplo: while (posicion_final != dentro) adelante()
© F.Escolano & M.I.Alfonso
PG -
13
Algoritmos y Sentencias (IV)
‰
Llamadas a métodos con parámetros
Los parámetros permiten ejecutar un mismo algoritmo con
distintas entradas
‰
Ejemplo
levantar_brazo(altura)
Un parámetro es una
variable de ENTRADA del
algoritmo (*)
‰
Posibles llamadas:
levantar_brazo(25)
levantar_brazo(50)
...
Cada parámetro puede
tomar valores de un tipo
determinado
(*) Dependiendo del lenguaje también puede constituir una SALIDA del algoritmo
© F.Escolano & M.I.Alfonso
PG -
14
7
Construcción de software orientado a objetos
‰
Basa la arquitectura de cualquier sistema software en
módulos deducidos de los tipos de objetos que manipula
lema de los objetos: "No pregunte
primero qué hace el sistema: ¡pregunte a
qué se lo hace!"
‰
Se analizan las especificaciones para descubrir las clases
del sistema (tipos de objetos)
© F.Escolano & M.I.Alfonso
PG -
15
Búsqueda de las clases (I)
‰
En el documento de requisitos:
– Verbos = acciones
– Nombres = objetos
El ascensor cerrará la puerta antes de
moverse hacia otro piso
ascensor
‰
‰
puerta
piso
mover()
Debemos evitar las clases inútiles
Debemos evitar pasar por alto las clases importantes
© F.Escolano & M.I.Alfonso
PG -
16
8
Búsqueda de las clases (II)
‰
Debemos evitar una mala elección de una clase
Una clase no hace una cosa, sino que ofrece
un cierto número de servicios (características)
aplicables a los objetos de un cierto tipo
‰
La clase ideal
– Tiene asociada una clara abstracción de datos
– El nombre de la clase es un nombre o adjetivo
– Se dispone de órdenes para consultar y cambiar el
estado de una instancia
© F.Escolano & M.I.Alfonso
PG -
17
Comenzando a programar en Java
‰ Lenguaje Java
–
–
sintaxis (forma)
semántica (significado)
‰ Programa Java = conjunto de clases
‰ Esquema general de la declaración de una clase:
modificadores class nombreclase {
// declaración de variables y constantes
// constructores
modificadores nombreclase (parametros);
// métodos de clase
modificadores nombre_método (parámetros);
// métodos de objeto
modificadores nombre_método (parámetros);
}
© F.Escolano & M.I.Alfonso
PG -
18
9
Comenzando a programar en Java
‰ El nombre de una clase es un identificador
Un identificador en Java consta de letras, símbolos de
subrayado y dígitos, pero deben empezar por una letra.
Ejemplos: abrir_puerta, banderaTricolor, numero4765
‰ Los modificadores indican cómo se van a usar los
objetos y los miembros de los objetos.
Ejemplos: static, final, public
Su significado depende de si se aplican a una clase o a
un miembro de una clase
© F.Escolano & M.I.Alfonso
PG -
19
Comenzando a programar en Java
‰ Modificadores aplicados a una CLASE
Modificador
public
abstract
final
static
Significado
Accesible donde se use el paquete
No se pueden crear objetos
No se pueden crear subclases
Clase de nivel máximo, no interna
‰ Modificadores para los MIEMBROS de una clase
Modificador
public
private
protected
abstract
final
static
Significado
Accesible donde se use la clase
Accesible sólo en su clase
Accesible en su paquete y sus subclases
Los métodos se implementan en las subclases
No se puede cambiar el valor
No se puede ocultar el método
Miembro accesible a través de la clase
© F.Escolano & M.I.Alfonso
PG -
20
10
Comenzando a programar en Java
‰ Variables y Constantes
Las variables pueden modificar su valor, las constantes NO.
Se pueden declarar en cualquier parte de la clase
‰ Declaración de variables
tipo nombre;
tipo nombre1, nombre2, nombre3;
tipo nombre = valor;
‰ Cualquier variable tiene un tipo asociado
–
–
puede ser un tipo predefinido, o
puede ser un objeto de alguna clase
© F.Escolano & M.I.Alfonso
PG -
21
Comenzando a programar en Java
‰ Tipos numéricos predefinidos en Java
Tipo
byte
short
int
long
float
double
Representación
Entero con
signo
Entero con
signo
Entero con
signo
Entero con
signo
Punto flotante
Punto flotante
‰ Conversión de tipos
Valor inicial
0
Almacenamiento
8 bits
Valor máximo
127
0
16 bits
32767
0
32 bits
2147483647
0
64 bits
1018 18
9,223⋅10
0
0
32 bits
64 bits
1038
4294967295
10308 19
1,84467⋅10
(tipo) expresión;
no hace falta
byte → short → int → long →float → double
conversión necesaria
© F.Escolano & M.I.Alfonso
PG -
22
11
Comenzando a programar en Java
‰ Expresiones
Son fórmulas que pueden ser evaluadas
Operador
+
−
*
/
%
Significado
Suma
Resta
Multiplicación
Ejemplos
Resultado
15 + 2.1
17.1
3
10 − (4 + 3)
136
34 * (12
−8)
División
59
9 * 15/5 +
32
Operación módulo
81 % 11
4
(resto de la división
entera)
‰ Instrucción de asignación
variable = nombre;
El valor asignado a una variable
tiene que ser uno de los
permitidos por su tipo
© F.Escolano & M.I.Alfonso
PG -
23
Comenzando a programar en Java
‰ Tipos de variables
–
Variables de clase
El almacenamiento para la variable se crea una sola vez para la
clase
Se debe anteponer el modificador static al tipo de la variable
en su declaración
–
Variables de objeto (de instancia)
Se crean una vez para cada objeto instanciado de esa clase
–
Variables locales a un método
Se declaran en un método y solamente tienen significado dentro
de dicho método
El ámbito de una variable es la porción de código en
donde se puede usar dicha variable
© F.Escolano & M.I.Alfonso
PG -
24
12
Comenzando a programar en Java
‰ Ejemplo
class Triple
//Almacena y manipula tripletas de números flotantes;
{ double x,y; float z; //variables de instancia
static h; //variable de clase
declaraciones
Triple()
{ x= 0.0;
x,y,z pueden usarse en Triple() y sum()
y= 0.0;
laSuma
solamente puede usarse en sum()
z= 0.0;
}
asignación
double sum()
conversión de tipos
{ double laSuma= 0.0;
laSuma= x + y + (double)z;
return laSuma;
}
}
© F.Escolano & M.I.Alfonso
PG -
25
PG -
26
Comenzando a programar en Java
‰ Declaración de Constantes
static final tipo nombre = valor;
Las declaraciones de constantes pueden ocurrir
SÓLO dentro de las clases
‰ Constructores
–
–
–
Utilizados para crear objetos de una clase
Tienen el mismo nombre que la clase
Puede haber más de un constructor
© F.Escolano & M.I.Alfonso
13
Comenzando a programar en Java
‰ Declaración de objetos
modificador nombreClase nombreObjeto = new
constructor(parámetros) ;
‰ Ejemplo
class Flores {
public Flores () {...}
public Flores (int n) {...}
... }
Flores margarita = new Flores();
Flores crisantemo = new Flores(2);
Flores rosa = new Flores();
la palabra reservada new permite crear instancias de una clase
© F.Escolano & M.I.Alfonso
PG -
27
Comenzando a programar en Java
‰ Métodos
–
Métodos de clase
Solamente son aplicables a una clase
Se debe utilizar el modificador static
–
Métodos de objeto
Solamente son aplicables a un objeto
‰ Modelo de declaración de método
modificadores salida nombre (parámetros) {
//declaraciones e instrucciones;
return expresión; // sólo para métodos con resultado
}
© F.Escolano & M.I.Alfonso
PG -
28
14
Comenzando a programar en Java
‰ "Salida" puede tomar los valores
–
–
–
void Ejemplo: void abrir();
tipo predefinido Ejemplo: double sum();
una clase Ejemplo: Triple buscar();
‰ Llamadas a métodos
método(parámetros); // declarado en esa clase
objeto.método(parámetros); //declarado en otro objeto
nombreClase.método(parámetros); //declarado static en
//otra clase
© F.Escolano & M.I.Alfonso
PG -
29
Comenzando a programar en Java
‰ Parámetros
–
–
En la declaración de un método
Ejemplo: public aumentar(25) { ... };
En la llamada a un método
Ejemplo:
int calcular_años(int año_cese, int año_alta) {...}
calcular_años (20,10);
calcular_años(2*4,1+6);
es equivalente a
int año2 = 20;
int año1 = 10;
calcular_años (año2,año1);
© F.Escolano & M.I.Alfonso
PG -
30
15
Comenzando a programar en Java
‰ Esquema mínimo de un programa
class NombreClase {
public static void main (String [ ] nombreArg) {
//declaraciones e instrucciones
}
}
‰ Ejemplo de un programa que no hace nada
class Nada {
public static void main (String [ ] nombreArg) {
}
}
© F.Escolano & M.I.Alfonso
PG -
31
Comenzando a programar en Java
‰ Paquete =
conjunto de clases relacionadas lógicamente y que se
encuentran implementadas en un mismo fichero
Ejemplos: io, text, awt, applet, awt.event
‰ Acceso a un paquete de Java
import java.nombrePaquete.*;
© F.Escolano & M.I.Alfonso
PG -
32
16
Descargar