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

Programacin Orientada a

Objetos en Java
Curso 2006 - 2007

Tema 3 Clases y Objetos

Gonzalo Mndez Pozo


Dpto. de Ingeniera de Software e Inteligencia Artificial
Universidad Complutense de Madrid

Clases y Objetos
Programacin Estructurada:
Tipos Abstractos de Datos (TAD)

Programacin Orientada a Objetos:


Clases y objetos

Las clases y los TAD no son


equivalentes, aunque se puede
establecer cierta analoga

Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Objetos
Son la parte ejecutable de la
programacin orientada a objetos
Se manejan a travs de variables
Pertenecen a una clase

Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Clases
Son la plantilla a partir de la cual se crean
los objetos
Formadas por:
Nombre
Atributos
Mtodos

Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Clases
En general, interesa que los atributos no
se puedan tocar directamente desde
fuera de la clase privados
Los mtodos son la forma de
comunicarse con la clase para pedirle que
haga cosas (servicios) pblicos o
privados
Los mtodos get y set hacen trampa
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Errores de la POO
Clase Tipo
Atributos Estado
Mtodos Comportamiento
Los objetos no imitan la realidad
Los objetos no son funciones + datos
Objeto = cosa

Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Declaracin de Clases en Java


public class Circulo
{
private int centro_x, centro_y, radio;
public void paint (Graphics g)
{
g.drawCircle (centro_x, centro_y, radio,
Color.GREEN);
}
}
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Declaracin de Clases en Java


Hay que declarar la visibilidad de la clase,
sus atributos y sus mtodos
En cada fichero
una clase pblica con el mismo nombre del
fichero
0..n clases privadas

Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Uso de Objetos
Primero es necesario declarar una
variable perteneciente a la clase:
Circulo mi_circulo;

Despus hay que crear el objeto:


mi_circulo = new Circulo();

Ahora ya se puede llamar a los mtodos


del objeto:
mi_circulo.paint();
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Constructor
Mtodo especial que indica lo que se hace
cuando se crea un objeto
Tiene el mismo nombre que la clase
Pueden existir varios constructores con
distintos parmetros
Si no declaramos ninguno se usa el constructor
por defecto
Si declaramos alguno es obligatorio declarar
tambin el constructor por defecto
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Constructor
Public class Circulo
{
int c_x, c_y, radio;

Circulo (int x, int y, int r)


{
c_x = x;
c_y = y;
radio = r;
}

Circulo (int x, int y)


{
c_x = x;
c_y = y;
radio = 1;
}

Circulo()
{
c_x=c_y=radio=1;
}
}

Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Un objeto especial: this


La palabra reservada this sirve para que
un objeto haga referencia a s mismo
Usos:
Un objeto se pasa a s mismo como
parmetro al llamar a un mtodo de otro
objeto
Especificar que un objeto utiliza sus
mtodos o sus atributos: no es obligatorio,
pero a veces es necesario
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Un objeto especial: this


public class Circulo
{
public void paint ()
{
Ventana.paint(this);
}
}

public class Circulo


{
int x,y,r;
Circulo(int x, int y, int r)
{
this.x = x;
this.y = y;
this.r = r;
}
}

Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Mtodos
De manera general, la declaracin de un mtodo en
java es de la forma
modo_acceso modificadores tipo_retorno nombre_metodo (argumentos)
{
Cuerpo del mtodo
}

Donde
modo_acceso: public, private, protected
No es obligatorio especificarlo, pero es conveniente

Modificadores: static, abstract, final, native, synchronized


No es obligatorio usarlos

El tipo de retorno s es obligatorio. Si no se devuelve nada se


usa la palabra reservada void
Si no hay augumentos no se pone nada entre los parntesis
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Paso de Parmetros
En java los parmetros siempre se pasan por
copia
Los argumentos de los tipos bsicos no quedan
modificados fuera del mtodo aunque se
modifiquen dentro
En el caso de pasar objetos como parmetro, lo
que se copia es una referencia al objeto
Si modificamos el objeto dentro del mtodo tambin
se modifica fuera
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Valor de Salida de un Mtodo


Se indica con la palabra clave return seguida
de lo que se quiere devolver
public int cuadrado (int x)
{
return (x*x);
}

Si se devuelve un void no es necesario utilizar


return
Es conveniente tener un solo return por funcin
Hay que asegurarse de que, si se devuelve un
valor, siempre se puede hacer el return (si no,
da un error de compilacin)
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Valor de Salida de un Mtodo


Si lo que devolvemos es un objeto:
Se acta igual que en el caso de devolver
un valor de un tipo simple

Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Algunos Mtodos Especiales


toString:
Por defecto, Java convierte cualquier cosa
en un String
Con objetos, si no le decimos cmo hacerlo,
el String contiene la direccin del objeto
La implementacin de toString indica cmo
hacer la conversin
public String toString ()
{
return ((+c_x+,+c_y+)+,+r);
}
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Algunos Mtodos Especiales


equals:
No se debe usar == para comparar objetos,
pues el resultado indica si los dos valores
que se comparan son el mismo objeto, no si
dos objetos son iguales
public boolean equals (Circulo c)
{
return (this.c_x==c.c_x && this.c_y==c.c_y &&
this.c_r==c.c_r);
}
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Algunos Mtodos Especiales


clone:
Si a una variable le asignamos otra que
contiene un objeto, ambas variables tienen
una referencia al mismo objeto
Para que se asigne una copia del objeto hay
que hacerlo a travs del mtodo clone
public Circulo clone()
{
return new Circulo(this.c_x, this.c_y, this.c_r);
}
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

10

El Modificador static
En atributos indica que son atributos de clase,
es decir, que tienen el mismo valor para todos
los objetos de la clase
Si un objeto modifica el valor, se modifica para
todos los objetos

En mtodos indica que son mtodos de clase,


es decir, que se invocan sobre la clase sin
necesidad de crear objetos.
Slo pueden manejar atributos static
Ejemplos: mtodo main, mtodos de la clase Math
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

Ejercicios
Implementar la clase Complejo
public class Complejo
{
// atributos, representan el nmero x+yi
private double x,y;
// constructores
public Complejo() { }
public Complejo(double x, double y) { }
// mtodos
public void ponX(double nuevaX) { }
public void ponY(double nuevaY) { }
public double valorX() { }
public double valorY() { }
public double mdulo() { }

}
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

11

Ejercicios
Implementar los siguientes mtodos:
Calcular el conjugado
Modificando el objeto
Sin modificar el objeto

toString
equals
clone

Implementar la clase PruebaComplejos con el


mtodo main para probar el funcionamiento de
la clase Complejo
Gonzalo Mndez - Dpto. Ingeniera de Software e Inteligencia Artificial

12

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

  • Entrega Semana 4
    Entrega Semana 4
    Документ9 страниц
    Entrega Semana 4
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Usuarios Grupo S
    Usuarios Grupo S
    Документ7 страниц
    Usuarios Grupo S
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Historia Unix
    Historia Unix
    Документ2 страницы
    Historia Unix
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Funcion Norm Matlab
    Funcion Norm Matlab
    Документ3 страницы
    Funcion Norm Matlab
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Ejercicios Java POO
    Ejercicios Java POO
    Документ10 страниц
    Ejercicios Java POO
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • LG
    LG
    Документ2 страницы
    LG
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Breve Historia de Las Carreteras Sub
    Breve Historia de Las Carreteras Sub
    Документ11 страниц
    Breve Historia de Las Carreteras Sub
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Unos Ejercicios Contables
    Unos Ejercicios Contables
    Документ15 страниц
    Unos Ejercicios Contables
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Conta
    Conta
    Документ39 страниц
    Conta
    Kevin Daniel Antunez Ortiz
    Оценок пока нет
  • Polimorfismo
    Polimorfismo
    Документ8 страниц
    Polimorfismo
    Josué Sauceda Silva
    Оценок пока нет
  • Temario Java Se 8 Fundamentals v.1.0
    Temario Java Se 8 Fundamentals v.1.0
    Документ2 страницы
    Temario Java Se 8 Fundamentals v.1.0
    JaimeRodrguez
    Оценок пока нет
  • Resumen POO
    Resumen POO
    Документ4 страницы
    Resumen POO
    Abimael Antonio Pineda
    Оценок пока нет
  • Reto 2
    Reto 2
    Документ8 страниц
    Reto 2
    Bernardo López Ortiz
    Оценок пока нет
  • Public Interface Mostrable
    Public Interface Mostrable
    Документ3 страницы
    Public Interface Mostrable
    Alejandro José Osorto
    Оценок пока нет
  • Practica Redes de Petri (Reparado)
    Practica Redes de Petri (Reparado)
    Документ43 страницы
    Practica Redes de Petri (Reparado)
    Nelson Javier Dueñas Bastidas
    Оценок пока нет
  • Automatas de Pila
    Automatas de Pila
    Документ21 страница
    Automatas de Pila
    Rainer Diaz
    Оценок пока нет
  • Teoría 3. Clases y Objetos PDF
    Teoría 3. Clases y Objetos PDF
    Документ57 страниц
    Teoría 3. Clases y Objetos PDF
    BrianJ.RomeroAguirre
    Оценок пока нет
  • Evaluación Laboratorio de Programación Orientada A Objetos Nombre
    Evaluación Laboratorio de Programación Orientada A Objetos Nombre
    Документ2 страницы
    Evaluación Laboratorio de Programación Orientada A Objetos Nombre
    Klaus
    Оценок пока нет
  • Protocolo Individual DE LA UNIDAD 2 POO
    Protocolo Individual DE LA UNIDAD 2 POO
    Документ3 страницы
    Protocolo Individual DE LA UNIDAD 2 POO
    Juan Camilo Hoyos Solis
    Оценок пока нет
  • Tarea Semana 9 Fundamentos
    Tarea Semana 9 Fundamentos
    Документ9 страниц
    Tarea Semana 9 Fundamentos
    CRISTIAN PATRICIO INCHIGLEMA ALDANA
    Оценок пока нет
  • Clases Abstractas
    Clases Abstractas
    Документ7 страниц
    Clases Abstractas
    Maria Leon
    Оценок пока нет
  • Programacion Orientados en Objetos
    Programacion Orientados en Objetos
    Документ9 страниц
    Programacion Orientados en Objetos
    Bismarck Portillo
    Оценок пока нет
  • Clases
    Clases
    Документ141 страница
    Clases
    drw_21
    Оценок пока нет
  • Clases Uml
    Clases Uml
    Документ13 страниц
    Clases Uml
    Carlos Leon
    Оценок пока нет
  • Paradigma Funcional
    Paradigma Funcional
    Документ24 страницы
    Paradigma Funcional
    Jorge Forciniti
    Оценок пока нет
  • Taller Clases-Objetos
    Taller Clases-Objetos
    Документ47 страниц
    Taller Clases-Objetos
    Diego Rodriguez
    Оценок пока нет
  • Hashmap Al
    Hashmap Al
    Документ5 страниц
    Hashmap Al
    jayadevi piñeiro
    Оценок пока нет
  • Conceptos Generale de POO
    Conceptos Generale de POO
    Документ41 страница
    Conceptos Generale de POO
    Luis Daniel Arevalo Sandoval
    Оценок пока нет
  • Diccionario de Datos Términos
    Diccionario de Datos Términos
    Документ3 страницы
    Diccionario de Datos Términos
    Alfredo Alvarez
    Оценок пока нет
  • Autómatas PEC1
    Autómatas PEC1
    Документ14 страниц
    Autómatas PEC1
    Miguel Martínez Redondo
    Оценок пока нет
  • Parcial Mb545 2021 I Mariana
    Parcial Mb545 2021 I Mariana
    Документ9 страниц
    Parcial Mb545 2021 I Mariana
    Sergio Fernandez
    Оценок пока нет
  • Mapa Conceptual Poo
    Mapa Conceptual Poo
    Документ1 страница
    Mapa Conceptual Poo
    MANUEL FARID RODRIGUEZ
    Оценок пока нет
  • T4 - Clases y Objetos
    T4 - Clases y Objetos
    Документ134 страницы
    T4 - Clases y Objetos
    Mohamed Karimy
    Оценок пока нет
  • Actividad Fundamental 1 Lenguajes
    Actividad Fundamental 1 Lenguajes
    Документ4 страницы
    Actividad Fundamental 1 Lenguajes
    jacob hernandez
    Оценок пока нет
  • (ACV-S06) Semana 06 - Tarea Académica 1
    (ACV-S06) Semana 06 - Tarea Académica 1
    Документ9 страниц
    (ACV-S06) Semana 06 - Tarea Académica 1
    Luis Cano
    Оценок пока нет
  • Base de Datos Orientada A Objetos
    Base de Datos Orientada A Objetos
    Документ6 страниц
    Base de Datos Orientada A Objetos
    Alejandra Sarabia
    Оценок пока нет
  • 2.3 Trabajo de Investigación
    2.3 Trabajo de Investigación
    Документ20 страниц
    2.3 Trabajo de Investigación
    jossue
    Оценок пока нет
  • Libro Java
    Libro Java
    Документ261 страница
    Libro Java
    Matthew Lee
    Оценок пока нет
  • Apuntes JAVA
    Apuntes JAVA
    Документ7 страниц
    Apuntes JAVA
    Cristian Ladino
    Оценок пока нет