Programación Orientada a Objetos

Transcripción

Programación Orientada a Objetos
Programación Orientada a
Objetos con Java
M.C. Jorge Eduardo Ibarra Esquer
[email protected]
Diseño orientado a objetos
†
†
El diseño orientado a objetos surge de la idea de
traspasar a los sistemas de software, la organización
y el funcionamiento de los sistemas reales complejos
La organización de los sistemas de software en
objetos refleja el análisis de la jerarquía estructural
(en la disposición de los objetos) y de la jerarquía de
tipos (en la organización de las clases de objetos) de
los sistemas reales complejos.
1
Diseño orientado a objetos
†
Esta organización es más fácil de mantener, es más
versátil y adaptable a nuevas necesidades del mismo
sistema y además permite la reutilización de las
clases de objetos por otros sistemas.
Paradigmas de la programación
†
†
Los lenguajes de programación consisten de
dos elementos: código y datos
Los programas pueden organizarse
conceptualmente en torno a su código o en
torno a sus datos
2
Paradigmas de la programación
†
En torno al código:
„
„
„
„
„
Modelo orientado al proceso
¿Qué está ocurriendo?
Código: serie de pasos lineales
Código que actúa sobre los datos
Los programas pueden volverse problemáticos a
medida que se hacen más largos y complejos.
Paradigmas de la programación
†
En torno a los datos:
„
„
„
„
¿Quién está siendo afectado?
Programación orientada a objetos
Los programas se organizan alrededor de los
datos (objetos) y de interfaces para interactuar
con ellos
Conjunto de datos que controlan el acceso al
código
3
Programación Orientada a Objetos
†
Se dice que la POO es más natural que la
programación tradicional.
„
„
Permite organizar la información de una manera
que nos resulta más familiar
Refleja las técnicas de la naturaleza para abordar
la complejidad
Abstracción
†
†
†
Es un elemento esencial de la POO
Comúnmente utilizamos la abstracción para abordar
la complejidad. Por ejemplo, un automóvil que está
compuesto por varios sistemas.
Se aplica mediante clasificaciones jerárquicas
4
Abstracción
†
†
†
†
Las abstracciones jerárquicas de sistemas
complejos, se pueden aplicar a los programas de
computadora
Los datos se pueden transformar mediante la
abstracción en objetos
Cada objeto describe su comportamiento
Los objetos se pueden tratar como entidades que
responden a mensajes que les ordenan hacer
“algo”
Principios de la POO
†
Encapsulado
„
„
„
Mecanismo que permite unir el código junto con
los datos que manipula, manteniendo a ambos a
salvo de interferencias exteriores
El acceso al código y los datos es controlado por
una interfaz
La base del encapsulado es la clase
5
Principios de la POO
†
Herencia
„
„
Es el proceso mediante el cual un objeto adquiere
las propiedades de otro
Mediante la herencia, un objeto sólo necesita
definir aquellas cualidades que lo hacen único en
su clase
Principios de la POO
†
Polimorfismo
„
„
„
Permite que una interfaz sea utilizada por una
clase general de acciones
Es la propiedad que tienen algunas
operaciones de tener un comportamiento
diferente dependiendo del tipo de dato sobre el
que se aplican
Capacidad del código de un programa para ser
utilizado con diferentes tipos de datos
6
Clases y objetos
†
†
†
Una clase define la estructura y comportamiento
(datos y código) que serán compartidos por un
conjunto de objetos
Una clase define un nuevo tipo de dato a partir del
cual se pueden crear nuevos objetos
Cada objeto de una determinada clase contiene la
estructura y comportamiento definidos por la clase
Clases y objetos
†
†
†
Una clase es una construcción lógica,
mientras que un objeto tiene una realidad
física
Una clase especifica métodos (funciones) y
atributos (variables)
Un objeto es una instancia específica de una
clase
7
Composición
†
Las variables que contienen los objetos pueden
utilizarse de dos formas diferentes:
„
„
†
†
Almacenar valores de datos
Contener referencias a otros objetos
Los objetos que contienen otros objetos se llaman
objetos compuestos.
Los objetos compuestos son importantes debido a
que permiten representar estructuras mucho más
complejas que los objetos sencillos. P. ej.:
„
Un avión está compuesto por el tren de aterrizaje, las alas,
la cabina y otros objetos que son demasiado complejos
para ser representados como simples números o texto.
8
Clases en Java
†
†
†
Las clases son la parte central de Java
Una clase define un nuevo tipo de dato que
puede utilizarse para crear objetos de ese
mismo tipo o clase
Al definir una clase, se especifican los datos
que contiene y el código que opera sobre los
mismos
Clases en Java
†
La forma general de una clase es:
class nombreDeLaClase {
tipo variable1;
tipo variable2;
…
tipo variableN;
Una clase se declara mediante la
palabra clave class
tipo nombreMétodo1(lista de parámetros){
//Cuerpo del método
}
…
tipo nombreMétodoN(lista de parámetros){
//Cuerpo del método
}
}
9
Una clase para empezar
†
Se definirá una clase para representar un
pizarrón
„
„
Nombre: Pizarron
Atributos:
†
†
†
†
material
color
ancho
alto
String
String
double
double
La clase Pizarron
†
La clase debe guardarse en un archivo con el
nombre Pizarron.java
public class Pizarron {
String color;
String material;
double ancho;
double alto;
}
10
Crear objetos de una clase
†
†
Una vez definida la clase, podemos crear
objetos de ese tipo desde otras clases o
programas
Para crear objetos, se utiliza el operador new,
de la siguiente forma:
„
†
Pizarron p=new Pizarron();
La variable ‘p’ representará una instancia de
‘Pizarron’
Crear objetos de una clase
Pizarron p;
null
p
p=new Pizarron();
color
p
material
ancho
alto
11
Acceso a los atributos de la clase
†
Por medio del operador ‘.’ se hace referencia
a los atributos definidos por la clase:
„
„
p.color=“Verde”;
System.out.println(“Color: ”+p.color);
Un programa que utiliza la clase
Pizarron
public class PruebaPizarron {
public static void main(String[] args) {
Pizarron p=new Pizarron();
p.alto=1.35;
p.ancho=3.23;
p.color="verde";
p.material="madera";
System.out.printf("Pizarrón %s de %s que mide %4.2f x %4.2f\n",
p.color,p.material,p.ancho,p.alto);
}
}
12
Variables de referencia a objetos
†
Analicemos el siguiente código:
Pizarron pz1,pz2;
pz1=new Pizarron();
pz2=pz1;
pz1 y pz2 hacen referencia
al mismo objeto
pz1.ancho=4.25;
pz2.ancho=5.40;
System.out.println(“El ancho del pizarron 1 es: ”+pz1.ancho);
System.out.println(“El ancho del pizarron 2 es: ”+pz2.ancho);
¿Cuál será la salida generada por este fragmento de código?
Variables de referencia a objetos
Pizarron pz1,pz2,pz3;
pz1=new Pizarron();
pz2=new Pizarron();
pz3=pz1;
pz1.ancho=4.25;
pz2.ancho=5.40;
pz1=pz2;
Una asignación posterior
de pz1 no afecta al objeto
que referenciaba con anterioridad
System.out.println(“El ancho del pizarron 1 es: ”+pz1.ancho);
System.out.println(“El ancho del pizarron 2 es: ”+pz2.ancho);
System.out.println(“El ancho del pizarron 3 es: ”+pz3.ancho);
¿Cuál será la salida generada por este fragmento de código?
13
Variables de referencia a objetos
†
Cuando una variable de referencia a un objeto
se asigna a otra, no se crea una copia del
objeto, sino una copia de la referencia
Métodos
†
†
Las clases están formadas por atributos
(variables de instancia) y métodos
Un método se define por el tipo de datos que
regresa, su nombre y los parámetros que
recibe:
tipo nombre(lista de parámetros)
{
cuerpo del método
}
‘tipo’ especifica el tipo de dato
que devuelve el método
La lista de parámetros es una
sucesión de pares de tipo e
identificador separados por comas
14
Agregar métodos a la clase Pizarron
†
†
Algunas acciones que se realizan con un
pizarrón son escribir, borrar y leer
Agregamos tres métodos que nos permitan
realizar dichas acciones:
„
„
„
void escribir(String texto)
void borrar()
String leer()
Agregar métodos a la clase Pizarron
†
De la misma forma, podemos agregar un
atributo que mantenga el texto que se escribe
en el pizarrón
„
†
String texto
De los métodos definidos, encontramos que
uno de ellos recibe un parámetro y otro
regresa un valor
15
Métodos con parámetros
†
†
Los métodos que reciben parámetros permiten
que su funcionalidad resulte diferente cada
vez que son llamados con parámetros distintos
El método escribir(String texto) recibirá el
texto a escribir en el pizarrón (o en la variable
que contiene el texto escrito en el pizarrón)
El método escribir(String texto)
String texto;
void escribir(String texto)
{
texto=texto;
}
La asignación texto=texto podría resultar confusa
La palabra clave this
String texto;
void escribir(String texto)
{
this.texto=texto;
}
La palabra this puede utilizarse dentro de cualquier
método para referirse al objeto actual
16
Métodos que regresan un valor
†
†
†
En algunas ocasiones, será necesario que
algún valor generado por un método de una
clase se asigne a una variable para ser
utilizado de manera posterior
Para ésto, los métodos tienen la opción de
regresar un valor al terminar se ejecución,
valiéndose de la palabra clave return
El tipo de datos que regresa el método debe
ser igual al indicado en su declaración
El método String leer( )
String leer()
{
return texto;
}
Este método simplemente regresa
el valor de la variable texto
Pizarron p=new Pizarron();
….
System.out.println(“El texto en el pizarrón es: ”+p.leer());
17
Constructores
†
†
†
Por lo general, resulta más sencillo inicializar
las variables de un objeto al momento de
crearlo. Esto se hace mediante un constructor
Un constructor inicializa un objeto
inmediatamente después de su creación
El constructor es un método con el mismo
nombre de la clase, que es llamado con el
operador new
Constructores
†
A diferencia de otros métodos, los
constructores no regresan ningún tipo de
datos, aunque implícitamente regresan un
objeto de su clase
/* Constructor de la clase Pizarron */
Pizarron()
{
material=“madera”;
color=“verde”;
ancho=3.00;
alto=2.00;
texto=“”;
}
18
Constructores
†
Los constructores pueden recibir parámetros,
de manera que podamos decidir la forma
específica en la que se inicializa un objeto
/* Constructor con parámetros de la clase Pizarron */
Pizarron(String material, String color, double ancho, double alto, String texto)
{
this.material=material;
this.color=color;
this.ancho=ancho;
this.alto=alto;
this.texto=texto;
}
19

Documentos relacionados