Вы находитесь на странице: 1из 16

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 Reutilización
Robustez Eficiencia
Fiabilidad Portabilidad
Extensibilidad Facilidad de uso

‰ El enfoque orientado a objetos favorece la calidad

© F.Escolano & M.I.Alfonso 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
... Propiedades
attributoN= valor_atributo Definen la estructura
Determinan el ESTADO
operación1(parámetros)
operación2(parámetros)
... Servicios
operaciónM(parámetros) Definen el comportamiento
Determinan la INTERFAZ

© F.Escolano & M.I.Alfonso PG - 4

2
Objetos (II)
Clase a la que
‰ Ejemplo de objeto: pertenece
empleado: Trabajador
nombre= Marcelo
fecha_nacim = 25/12/67 TODO objeto es instancia
sueldo = 150.000 de alguna CLASE
departamento = bancario

calcular_edad() Instancia = representa a un


aumentar_sueldo() objeto particular,
cambiar_depto() diferente de otro

© F.Escolano & M.I.Alfonso PG - 5

Objetos (III)

‰ Relación de una clase con sus instancias:

(clase) (objeto)
(objeto)

daphne:Persona
shaggy: Persona

(objeto) Persona (objeto)

freddy: Persona velma:Persona

© F.Escolano & M.I.Alfonso PG - 6

3
Clases (I)

‰ Representación de una clase:


NombreClase Identificación
atributo1: tipo_atributo
atributo2: tipo_atributo
... Propiedades
attributoN= tipo_atributo Comunes a todos los
objetos de la clase (*)
operación1(parámetros)
operación2(parámetros)
... Servicios
operaciónM(parámetros) Ocultan la implementación
(*)

© F.Escolano & M.I.Alfonso PG - 7

Clases (II)

‰ Ejemplo de clase:
Animal
peso león: Animal
altura (objeto instancia)
color
numeroDePatas
caballo: Animal
comer() (objeto instancia)
moverse()
dormir() objetos de
rana: Animal
(objeto instancia) clase Animal

© F.Escolano & M.I.Alfonso 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. Buscar en nuestra agenda el número de teléfono
2. Descolgar al auricular del teléfono
3. Esperar el tono de marcado
4. Marcar el número de teléfono
5. Hablar con nuestro interlocutor
6. Colgar el auricular

© F.Escolano & M.I.Alfonso PG - 11

Algoritmos y Sentencias (II)

‰ Otro ejemplo algoritmo entrar_habitacion()


robot
levantar_brazo( );
mano= brazo_articulado
apoyar_brazo ( );
posición_inicial= fuera
puerta.abrir( );
posición_final= nil
empujar( );
bajar_brazo ( );
levantar_brazo( )
adelante( );
bajar_brazo ( )
parar( );
apoyar_brazo ( )
posición_final = dentro;
empujar( )
adelante( )
parar( )
entrar_habitacion( )

© 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

Un parámetro es una
‰ Ejemplo variable de ENTRADA del
levantar_brazo(altura) algoritmo (*)

‰ Posibles llamadas:
Cada parámetro puede
levantar_brazo(25)
tomar valores de un tipo
levantar_brazo(50) 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 Significado
public Accesible donde se use el paquete
abstract No se pueden crear objetos
final No se pueden crear subclases
static Clase de nivel máximo, no interna
‰ Modificadores para los MIEMBROS de una clase
Modificador Significado
public Accesible donde se use la clase
private Accesible sólo en su clase
protected Accesible en su paquete y sus subclases
abstract Los métodos se implementan en las subclases
final No se puede cambiar el valor
No se puede ocultar el método
static 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 Representación Valor inicial Almacenamiento Valor máximo
byte Entero con 0 8 bits 127
signo
short Entero con 0 16 bits 32767
signo
int Entero con 0 32 bits 2147483647
signo
long Entero con 0 64 bits 1018 18
9,223⋅10
signo
float Punto flotante 0 32 bits 1038
4294967295
double Punto flotante 0 64 bits 10308 19
1,84467⋅10

‰ Conversión de tipos (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 Ejemplos Resultado
+ Suma 15 + 2.1 17.1
− Resta 10 − (4 + 3) 3
* Multiplicación 34 * (12 136
−8)
/ División 9 * 15/5 + 59
32
% Operación módulo 81 % 11 4
(resto de la división
entera)

El valor asignado a una variable


‰ Instrucción de asignación tiene que ser uno de los
variable = nombre; 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;
z= 0.0;
laSuma solamente puede usarse en sum()
}
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

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 PG - 26

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

Вам также может понравиться