Download Objetos y Clases - Facultad de Informática

Document related concepts
no text concepts found
Transcript
Fundamentos de la Programación Orientada a Objetos
Objetos y Clases
Programación Orientada a Objetos
Facultad de Informática
Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Universidad Complutense Madrid
Conceptos fundamentales de la POO
Objetos
Clases
Métodos
Parámetros
Tipos de datos
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
2
Objetos
Los objetos son/representan cosas
Los objetos pueden ser simples o complejos
Los objetos pueden ser reales o imaginarios
Hola Mundo
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
3
Programación Orientada a Objetos
Atributos
Valores o características de los objetos
Permiten definir el estado del objeto u otras cualidades
Velocidad
Aceleración
Capacidad de
combustible
Marca
Color
Potencia
Velocidad máxima
Carburante
constantes
variables
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
4
Mensajes
Los objetos se comunican e interaccionen entre sí por
medio de mensajes
Si un objeto desea que otro objeto haga algo le envía un
mensaje que puede tener información adicional en forma
de parámetros
Cuando un objeto recibe un mensaje ejecutará un método
u operación
Componentes de un mensaje
Objeto destinatario del mensaje (miCoche)
Método que se debe ejecutar como respuesta (cambiar
marcha)
Parámetros necesarios del método (segunda)
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
5
Programación Orientada a Objetos
Métodos (u operaciones)
Acciones que puede realizar un objeto
Arrancar motor
Parar motor
Acelerar
Frenar
Girar a la derecha (grados)
Girar a la izquierda (grados)
Cambiar marcha (nueva marcha)
método
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
argumentos
o
parámetros
6
Métodos (u operaciones)
Los métodos pueden devolver un valor al acabar su
ejecución
Valor de retorno
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
7
Clases
Representan un tipo particular de objetos
Objetos con características y comportamiento similar
Categorías de objetos
objetos de la clase
Coche
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
8
Clases
Cada clase tiene asociado un código (definición de la
clase), que determina
Los atributos que tienen los objetos de la clase
Los métodos que pueden ejecutar los objetos de la clase y
cómo lo hacen
Programar orientado a objetos consiste en escribir código
de clases de objetos
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
9
Definición de clases en C++
enum Carburante {
diesel, super, sinplomo
};
void frenar() {
// instrucciones para frenar el coche
};
class Coche {
char* marca;
double vel_max;
int potencia;
Carburante tipo_carburante;
void acelerar() {
// instrucciones para acelerar el coche
};
void girar_derecha(short grados) {
// instrucciones para girar a la derecha
};
double velocidad;
double aceleracion;
public:
void arrancar() {
// instrucciones para arrancar el coche
};
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
// etc.
}; // fin de definición de la clase Coche
Programación Orientada a Objetos
10
Definición de clases en Java
void frenar() {
// instrucciones para frenar el coche
};
class Coche {
// atributos:
String marca;
double vel_max;
int potencia;
String tipo_carburante;
void acelerar() {
// instrucciones para acelerar el coche
};
double velocidad;
double aceleracion;
void girar_derecha(short grados) {
// instrucciones para girar a la derecha
};
// métodos:
void arrancar() {
// instrucciones para arrancar el coche
};
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
// etc.
}; // fin de definición de la clase Coche
Programación Orientada a Objetos
11
Clases
De cada clase pueden crearse múltiples objetos
Cada objeto tiene valores propios asignados a los
atributos: estado del objeto
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
12
Tipos de datos
Indican la naturaleza de los datos
Hay algunos básicos (dependen del lenguaje de programación)
Que se pasan como parámetro o que devuelven los métodos
De los atributos de los objetos
int
boolean
double
String
…
Y otros los definen las clases
Objetos de una clase determinada
• Definida por el usuario
• De una librería
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
13
Un programa en POO
Un programa consta de un conjunto de instancias o
ejemplares de objetos (object instances) y un flujo de
control principal (main)
Durante la ejecución del programa:
Los objetos se crean y se destruyen
• Gestión dinámica de la memoria
Se les solicita a los objetos que ejecuten métodos
(operaciones)
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
14
Un programa en C++
main() {
Coche *c=new Coche(); // crea un objeto Coche
c-> arrancar
// utiliza el objeto
// ...
dispose(c);
// elimina el objeto
}
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
15
Un programa en Java
class Programa {
public static void main(String args[]) {
Coche c=new Coche(); // crea un objeto Coche
c.arrancar();
// utiliza el objeto
// ...
} // se elimina el objeto cuando nadie lo puede utilizar
// ¡ automáticamente !
}
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
16
Ejercicios
Instalar BlueJ
Se puede encontrar en http://www.bluej.org/
Abrir el ejemplo que tiene el nombre shapes
Crear objetos
Seleccionar un objeto y ejecutar new ClaseObjeto()
Ver atributos de objetos
Invocar métodos en objetos
Ver el código de las clases de objetos
Crear un dibujo combinando varios objetos
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
17
Bibliografía
D.J. Barnes y M. Kölling, Programación orientada a objetos con Java.
Una introducción práctica usando BlueJ. Pearson Educación, 2007
T. Budd, An introduction to Object-Oriented Programming (Third
Edition). Pearson Education, 2001
E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Paterns: Elements
of Reusable Object-Oriented Software. Addison-Wesley, 1994
B. Stroustrup, The C++ Programming Language (Third Edition).
Addison-Wesley, 1997
Agustín Froufe. Java 2. Manual de usuario y tutorial. Ed. Ra-Ma
J. Sánchez, G. Huecas, B. Fernández y P. Moreno, Iniciación y
referencia: Java 2. Osborne McGraw-Hill, 2001.
B. Meyer, Object-Oriented Software Construction (Second Edition).
Prentice Hall, 1997
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
18