Está en la página 1de 19

Programación Orientada a

Objetos con Java


M.C. Jorge Eduardo Ibarra Esquer
jorgeeie@uabc.mx

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; Una clase se declara mediante la
… palabra clave class
tipo variableN;

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 String
† color String
† ancho double
† alto 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; Una asignación posterior
de pz1 no afecta al objeto
pz1.ancho=4.25; que referenciaba con anterioridad
pz2.ancho=5.40;
pz1=pz2;

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’ especifica el tipo de dato
tipo nombre(lista de parámetros) que devuelve el método
{
cuerpo del 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)


{ La palabra this puede utilizarse dentro de cualquier
this.texto=texto; 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() Este método simplemente regresa
{ el valor de la variable texto
return 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

También podría gustarte