SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Tema 2. Objetos, Clases y
ProgramasProgramas
Introducción a la Informática y a la Programación (IIP)
Curso 2011/12
Departamento de Sistemas Informáticos y Computación
Contenidos
1. Estructura básica de una clase: atributos y métodos
2. Creación y uso de objetos: operadores new y punto (.)
3. Edición, compilación y ejecución en Java
4. Documentación de programas4. Documentación de programas
5. La organización en paquetes del lenguaje Java
6. Librerías de clases, herencia, la clase Object
20/09/2011 IIP - Curso 2011/12 2
Objetos, clases y programas
Se desea disponer de un espacio de dibujo a modo de pizarra,
que puede tener un tamaño variable, un título y sobre la cuál se
puedan dibujar círculos, rectángulos y cuadrados de diferentes
tamaño, colores y en diferentes posiciones.
Objetos y Características
20/09/2011 IIP - Curso 2011/12 3
Ámbito del problema Ámbito del programa
Objetos y
Clases
Características
Pizarra de diferentes tamaños y títulos
Circulo de diferentes tamaños, colores y posición
Cuadrado de diferentes tamaños, colores y posición
Rectángulo de diferentes tamaños, colores y posición
Clases y Objetos
• Un objeto se puede definir como una agrupación o colección de
datos y operaciones que poseen determinada estructura y
mediante los cuales se modelan aspectos relevantes de un
problema.
• Los objetos que comparten cierto comportamiento se pueden
agrupar en diferentes categorías llamadas clases.agrupar en diferentes categorías llamadas clases.
• Una clase describe el comportamiento de cada uno de los
objetos. Se dice entonces que el objeto es una instancia de la
clase.
• Java es un LOO y programar en Java es escribir las definiciones de
las clases y utilizar esas clases para crear objetos de forma que,
mediante los mismos, se represente adecuadamente el problema
que se desea resolver.
20/09/2011 IIP - Curso 2011/12 4
Clases en Java
• Clases predefinidas y definidas por el programador.
• Según la estructura de la clase y al uso que se va a hacer de ella
se pueden distinguir tres tipos básicos de clases:
– Clase-Tipo de dato: definen el conjunto de valores posibles
que pueden tomar los objetos y las operaciones que sobreque pueden tomar los objetos y las operaciones que sobre
éstos se pueden realizar.
– Clase-Programa: son las que inician la ejecución del código.
– Clase de Utilidades: son repositorios de operaciones que
pueden utilizarse desde otras clases.
20/09/2011 IIP - Curso 2011/12 5
Ejemplo de Clase-Tipo de dato
/** Clase Circulo: define un círculo de un determinado radio, color y … */
public class CirculoCirculoCirculoCirculo {
private double radio; private String color;
private int centroX, centroY;
/** crea un Circulo de radio 50, negro y centro en (100,100) */
public Circulo() { radio=50; color="negro"; centroX=100; centroY=100; }
/** consulta el radio del Circulo. */
public double getRadio() { return radio; }
/** actualiza el radio del Circulo a nuevoRadio. */
public void setRadio(double nuevoRadio) { radio = nuevoRadio; }public void setRadio(double nuevoRadio) { radio = nuevoRadio; }
/** decrementa el radio del Circulo. */
public void decrece() { radio = radio / 1.3; }
/** calcula el área del Circulo. */
public double area() { return 3.14 * radio * radio; }
/** obtiene un String con las componentes del Circulo. */
public String toString() { String res="Circulo de radio "+ radio;
res += ", color "+color+" y centro ("+centroX+","+centroY+")";
return res;
}
// más métodos
} 20/09/2011 IIP - Curso 2011/12 6
La importancia de documentar las clases
import javax.swing.*;
import java.awt.*;
/**
* Clase Pizarra: define una Pizarra sobre la que se pueden dibujar
* elementos de tipo Circulo, Rectangulo y Cuadrado
* @author Libro IIP-PRG
* @version 2011
*/
public class Pizarra extends JFrame {
// Elementos por defecto de la Pizarra:
private static int DIM_X = 200;
private static int DIM_Y = 200;
private static int NUM_MIN = 8;
// Atributos almacen objetos gráficos
private Object gOL[] = new Object[NUM_MIN];
private int numGO = 0;
// Constantes figuras posibles
20/09/2011 IIP - Curso 2011/12 7
// Constantes figuras posibles
private final static int DESCONOCIDO = -1;
private final static int CIRCULO = 0;
private final static int RECTANGULO = 1;
private final static int CUADRADO = 2;
// Constantes arrays de colores
private static final String NOM_COLS[] =
{"rojo","amarillo","verde","azul","naranja","negro"};
private static final Color COLS[] =
{Color.red, Color.yellow, Color.green, Color.blue,
Color.orange, Color.black};
private static final Color COLOR_POR_DEFECTO = Color.black;
/**
* construye una Pizarra por defecto en la que es posible
* situar elementos gráficos.
*/
public Pizarra() {
super("La pizarra por defecto"); setSize(DIM_X,DIM_Y);
setContentPane(initPanel()); setVisible(true);
} …
Ejemplo de Clase-Programa
/**Programa de prueba de las clases Circulo, Rectangulo y Pizarra
* @author Libro IIP-PRG
* @version 2011
*/
public class PrimerPrograma {
public static void main (String[] args) {
// Iniciar el espacio para dibujar dándole nombre y dimensión
Pizarra miPizarra = new Pizarra("ESPACIO DIBUJO",300,300);
// Crear un Circulo de radio 50, amarillo, con centro en (100,100)
Circulo c1 = new Circulo(50,"amarillo",100,100);
// Añadirlo a la Pizarra y dibujarlo// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(c1);
// Crear un Rectangulo de 30 por 30, azul, con centro en (125,125)
Rectangulo r1 = new Rectangulo(30,30,"azul",125,125);
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(r1);
// Crear un Rectangulo de 100 por 10, rojo, con centro en (50,155)
Rectangulo r2 = new Rectangulo(100,10,"rojo",50,155);
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(r2);
}
}
20/09/2011 IIP - Curso 2011/12 8
Estructura básica de una clase:
atributos y métodos
[modificadores] class NombreDeLaClaseNombreDeLaClaseNombreDeLaClaseNombreDeLaClase [ extends OtraClase ] {
//////// DefiniciónDefiniciónDefiniciónDefinición dededede AtributosAtributosAtributosAtributos
[[modificadores] tipo nomVar1;
[modificadores] tipo nomVar2;
... ... ...
[modificadores] tipo nomVarN; ][modificadores] tipo nomVarN; ]
//////// DefiniciónDefiniciónDefiniciónDefinición dededede MétodosMétodosMétodosMétodos
[[modificadores] tipo nomMetodo1 ([listaParams]) { cuerpo }
[modificadores] tipo nomMetodo2 ([listaParams]) { cuerpo }
... ... ...
[modificadores] tipo nomMetodoM ([listaParams]) { cuerpo } ]
}
20/09/2011 IIP - Curso 2011/12 9
Modificadores que definen el ámbito
de la declaración: private y public
• Toda la información declarada private es exclusiva del objeto e
inaccesible desde fuera de la clase.
– Cualquier intento de acceso a las variables de instancia radio o color que
se realice fuera de la clase Circulo (p.e., en la clase PrimerPrograma) dará
lugar a un error de compilación.
private double radio; private String color;
• Toda la información declarada es accesible desde fuera• Toda la información declarada public es accesible desde fuera
de la clase.
– Es el caso de los métodos getRadio o area de la clase Circulo.
/** consulta el radio del Circulo. */
public double getRadio() { return radio; }
/** calcula el área del Circulo. */
public double area() { return 3.14 * radio * radio; }
20/09/2011 IIP - Curso 2011/12 10
Atributos de una clase
• Los atributos o variables de instancia (nomVar1, nomVar2, ...,
nomVarN) representan información propia de cada objeto de la
clase y se declaran de un tipo de datos determinado, siendo
definidos habitualmente de acceso privado.
• El tipo de datos define los valores que el atributo puede tomar y
las operaciones que sobre él se pueden realizar.
20/09/2011 IIP - Curso 2011/12 11
//////// DefiniciónDefiniciónDefiniciónDefinición dededede AtributosAtributosAtributosAtributos
[[modificadores] tipo nomVar1;
[modificadores] tipo nomVar2;
... ... ...
[modificadores] tipo nomVarN; ]
public class Circulo {
private double radio;
private String color;
…
}
Métodos de una clase
• Los métodos definen las operaciones que se pueden aplicar
sobre los objetos de la clase y se describen indicando:
– Su cabecera o perfil: nombre, tipo de su resultado y lista de parámetros
que se requieren para el cálculo si fuera necesario.
• Es posible que un método no devuelva un valor (void)
– Su cuerpo: contiene la secuencia de instrucciones que se efectúan cuando
se ejecute.
• la instrucción es de aparición obligada (a menos que el resultado sea• la instrucción return es de aparición obligada (a menos que el resultado sea
void) y su efecto es devolver el resultado calculado
20/09/2011 IIP - Curso 2011/12 12
public class CirculoCirculoCirculoCirculo {
…
public void setRadio(double nuevoRadio) { radio = nuevoRadio; }
public double area() { return 3.14 * radio * radio; }
}
Métodos de una clase
• Se pueden clasificar, atendiendo a su función con respecto al
objeto del modo siguiente:
– Constructores: permiten crear el objeto;
– Modificadores: permiten alterar el estado (valores de las variables de
instancia) del objeto;
– Consultores: permiten conocer, sin alterar, el estado del objeto.
20/09/2011 IIP - Curso 2011/12 13
public class CirculoCirculoCirculoCirculo {
…
public Circulo() { radio=50; color="negro"; centroX=100; centroY=100; }
public Circulo(double r, String c, int px, int py) {
radio=r; color=c; centroX=px; centroY=py;
}
public double getRadio() { return radio; }
public void setRadio(double nuevoRadio) { radio = nuevoRadio; }
}
El método main
• En Java existe un método especial denominado main que indica
el punto de inicio de ejecución del código.
public static void main (String[] args) { … }
• El programa más sencillo en Java se implementa como una clase
con un único método main.
class NombreDeClase {
public static void main (String[] args) {
…
}
20/09/2011 IIP - Curso 2011/12 14
}
}
public class PrimerPrograma {
public static void main (String[] args) {
// Iniciar el espacio para dibujar dándole nombre y dimensión
Pizarra miPizarra = new Pizarra("ESPACIO DIBUJO",300,300);
// Crear un Circulo de radio 50, amarillo, con centro en (100,100)
Circulo c1 = new Circulo(50,"amarillo",100,100);
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(c1);
…
}
}
Creación y uso de objetos:
operadores new y punto
• El operador new se utiliza para crear un objeto de una clase
• El operador punto (.) se emplea para seleccionar el atributo
deseado o el método específico que se desea utilizar sobre el
objeto.
public class PrimerPrograma {
public static void main (String[] args) {
20/09/2011 IIP - Curso 2011/12 15
public static void main (String[] args) {
// Iniciar el espacio para dibujar dándole nombre y dimensión
Pizarra miPizarra = new Pizarra("ESPACIO DIBUJO",300,300);
// Crear un Circulo de radio 50, amarillo, con centro en (100,100)
Circulo c1 = new Circulo(50,"amarillo",100,100);
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(c1);
…
}
}
Edición, compilación y ejecución en java
/** Programa de prueba de las clases Circulo, Rectangulo y Pizarra
* @author Libro IIP-PRG
* @version 2011
*/
public class PrimerPrograma {
public static void main (String[] args) {
// Iniciar el espacio para dibujar dándole nombre y dimensión
Pizarra miPizarra = new Pizarra("ESPACIO DIBUJO",300,300);
// Crear Circulo de radio 50, amarillo, con centro en (100,100)
Circulo c1 = new Circulo(50,"amarillo",100,100);
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(c1);
// Crear Rectangulo de 30 por 30, azul, con centro en (125,125)
Rectangulo r1 = new Rectangulo(30,30,"azul",125,125);
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(r1);
// Crear Rectangulo de 100 por 10, rojo, con centro en (50,155)
Rectangulo r2 = new Rectangulo(100,10,"rojo",50,155);
// Añadirlo a la Pizarra y dibujarlo
PrimerPrograma.java
20/09/2011 IIP - Curso 2011/12 16
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(r2);
}
}
javac PrimerPrograma.java
… bytecodes …
PrimerPrograma.class
java PrimerPrograma.java
Errores de programación
• Es posible que aparezcan errores que imposibiliten la ejecución
de un programa o que alteren su comportamiento con respecto a
lo pretendido:
– Errores de compilación: suceden cuando el programa incumple alguna de
las características de la definición del lenguaje.
• El compilador del Java es múltiple pasada, está organizado en fases que se
ejecutan sólo si se ha pasado correctamente las fases previas.
• Generalmente estos errores son sencillos de corregir gracias a la ayudaGeneralmente estos errores son sencillos de corregir gracias a la ayuda
proporcionada por el compilador y al uso de la documentación del lenguaje.
– Errores de ejecución: provocan un malfuncionamiento del programa:
• Errores en tiempo de ejecución: provocan la detención de la ejecución
• Errores lógicos: provocan que los resultados obtenidos no son correctos
aunque puede parecer que el programa funciona correctamente.
En general, los errores de ejecución pueden ser difíciles de detectar y resolver.
20/09/2011 IIP - Curso 2011/12 17
Ejemplos de errores de compilación
public class CirculoCirculoCirculoCirculo {
private double radio; private String color;
private int centroX, centroY;
/** crea un Circulo de radio 50 , negro y centro en (100,100) */
plubic Circulo() { radio=50; color="negro"; centroX=100; centroY=100; }
/** consulta el radio del Circulo. */
public double getRadio() { return radio; }
/** actualiza el radio del Circulo a nuevoRadio. */
public void setRadio(double nuevoRadio) { radio = nuevoRadio; }
/** decrementa el radio del Circulo. */
20/09/2011 IIP - Curso 2011/12 18
public void decrece() { radio = radio / 1.3 }
/** calcula el área del Circulo. */
public double area() { return 3.14 * radio * radio; }
/** obtiene un String con las componentes del Circulo. */
public String toString() { String res="Circulo de radio "+ radio;
res += ", color "+color+" y centro ("+centroX+","+centroY+")";
return res;
}
// más métodos
}
Ejemplo de error de ejecución
/** Programa de prueba de las clases Circulo, Rectangulo y Pizarra
* @author Libro IIP-PRG
* @version 2011
*/
public class PrimerPrograma {
public static void main (String[] args) {
// Iniciar el espacio para dibujar dándole nombre y dimensión
Pizarra miPizarra = null;
// Crear Circulo de radio 50, amarillo,
Circulo c1 = new Circulo(50,"amarillo",100,100);
// Añadirlo a la Pizarra y dibujarlo
20/09/2011 IIP - Curso 2011/12 19
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(c1);
// Crear Rectangulo de 30 por 30, azul, con centro en (125,125)
Rectangulo r1 = new Rectangulo(30,30,"azul",125,125);
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(r1);
// Crear Rectangulo de 100 por 10, rojo, con centro en (50,155)
Rectangulo r2 = new Rectangulo(100,10,"rojo",50,155);
// Añadirlo a la Pizarra y dibujarlo
miPizarra.add(r2);
}
}
Ejemplos de errores lógicos
public class CirculoCirculoCirculoCirculo {
private double radio; private String color;
private int centroX, centroY;
/** crea un Circulo de radio 50, negro y centro en (100,100) */
public Circulo() {radio=-50; color="negro"; centroX=100; centroY=100; }
/** consulta el radio del Circulo. */
public double getRadio() { return radio; }
/** actualiza el radio del Circulo a nuevoRadio. */
public void setRadio(double nuevoRadio) { radio = nuevoRadio; }
/** decrementa el radio del Circulo. */
20/09/2011 IIP - Curso 2011/12 20
public void decrece() { radio = radio * 1.3; }
/** calcula el área del Circulo. */
public double area() { return 3.14 * radio; }
/** obtiene un String con las componentes del Circulo. */
public String toString() { String res="Círculo de radio "+ radio;
res += ", color "+color+" y centro ("+centroX+","+centroY+")";
return res;
}
// más métodos
}
Organización de clases: packages java
• Un paquete (package) facilita la organización y uso de las clases
ya definidas y la definición y uso de nuevas.
• Un package del Java consiste en un grupo de clases que pueden
ser importadas y, tras ello, utilizadas en otras clases.
packagepackagepackagepackage libUtil;
importimportimportimport javax.swing.*;
importimportimportimport java.awt.*;
public class Pizarra extends JFrame {
• En Java, las clases se estructuran siempre en paquetes, cuando
no se indica explícitamente, están en uno especial (anonymousanonymousanonymousanonymous).
• El paquete java.lang se importa por defecto. Forman parte de
este paquete las clases Object, String y Math.
20/09/2011 IIP - Curso 2011/12 21
public class Pizarra extends JFrame {
.....
}
Herencia. Jerarquía de clases: Object
• En los LOO el mecanismo básico para el reuso del código es la
herencia: permite definir nuevas clases extendiendo o
restringiendo las funcionalidades de otras clases ya existentes.
• La herencia permite modelar relaciones jerárquicas entre clases:
la heredera tiene las mismas características pero tal vez,
refinadas para definirla como un caso especial.
• La librería de clases del lenguaje se encuentra organizada de• La librería de clases del lenguaje se encuentra organizada de
forma jerárquica, siendo la base de dicha jerarquía ObjectObjectObjectObject.
20/09/2011 IIP - Curso 2011/12 22
java.lang.Objectjava.lang.Objectjava.lang.Objectjava.lang.Object
||||
++++--------java.awt.Componentjava.awt.Componentjava.awt.Componentjava.awt.Component
||||
++++--------java.awt.Containerjava.awt.Containerjava.awt.Containerjava.awt.Container
||||
++++--------java.awt.Windowjava.awt.Windowjava.awt.Windowjava.awt.Window
||||
++++--------java.awt.Framejava.awt.Framejava.awt.Framejava.awt.Frame
||||
++++--------javax.swing.JFramejavax.swing.JFramejavax.swing.JFramejavax.swing.JFrame

Más contenido relacionado

Destacado

Introducción a la programación y la informática. Tema 1
Introducción a la programación y la informática. Tema 1Introducción a la programación y la informática. Tema 1
Introducción a la programación y la informática. Tema 1Andres Garcia Garcia
 
Introducción a la programación y la informática. Tema 8
Introducción a la programación y la informática. Tema 8Introducción a la programación y la informática. Tema 8
Introducción a la programación y la informática. Tema 8Andres Garcia Garcia
 
Introducción a la programación y la informática. Tema 9
Introducción a la programación y la informática. Tema 9Introducción a la programación y la informática. Tema 9
Introducción a la programación y la informática. Tema 9Andres Garcia Garcia
 
Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 4Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 4Andres Garcia Garcia
 
Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5Andres Garcia Garcia
 
Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6Andres Garcia Garcia
 
Introducción a la programación y la informática. Tema 7
Introducción a la programación y la informática. Tema 7Introducción a la programación y la informática. Tema 7
Introducción a la programación y la informática. Tema 7Andres Garcia Garcia
 
Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 3Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 3Andres Garcia Garcia
 
User Interface Testing | Best Practices
User Interface Testing | Best Practices User Interface Testing | Best Practices
User Interface Testing | Best Practices David Tzemach
 
1.1. historia del lenguaje de programacion
1.1. historia del lenguaje de programacion1.1. historia del lenguaje de programacion
1.1. historia del lenguaje de programacionAlejandro Sanchez Jose
 
UI Testing Best Practices - An Expected Journey
UI Testing Best Practices - An Expected JourneyUI Testing Best Practices - An Expected Journey
UI Testing Best Practices - An Expected JourneyOren Farhi
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Andres Garcia Garcia
 
Historia Y EvolucióN De Los Lenguajes De ProgramacióN
Historia Y EvolucióN De Los Lenguajes De ProgramacióNHistoria Y EvolucióN De Los Lenguajes De ProgramacióN
Historia Y EvolucióN De Los Lenguajes De ProgramacióNda4
 

Destacado (15)

Introducción a la programación y la informática. Tema 1
Introducción a la programación y la informática. Tema 1Introducción a la programación y la informática. Tema 1
Introducción a la programación y la informática. Tema 1
 
Introducción a la programación y la informática. Tema 8
Introducción a la programación y la informática. Tema 8Introducción a la programación y la informática. Tema 8
Introducción a la programación y la informática. Tema 8
 
Introducción a la programación y la informática. Tema 9
Introducción a la programación y la informática. Tema 9Introducción a la programación y la informática. Tema 9
Introducción a la programación y la informática. Tema 9
 
Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 4Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 4
 
Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5
 
Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6
 
Introducción a la programación y la informática. Tema 7
Introducción a la programación y la informática. Tema 7Introducción a la programación y la informática. Tema 7
Introducción a la programación y la informática. Tema 7
 
Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 3Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 3
 
User Interface Testing | Best Practices
User Interface Testing | Best Practices User Interface Testing | Best Practices
User Interface Testing | Best Practices
 
1.1. historia del lenguaje de programacion
1.1. historia del lenguaje de programacion1.1. historia del lenguaje de programacion
1.1. historia del lenguaje de programacion
 
UI Testing Best Practices - An Expected Journey
UI Testing Best Practices - An Expected JourneyUI Testing Best Practices - An Expected Journey
UI Testing Best Practices - An Expected Journey
 
Condicionales
CondicionalesCondicionales
Condicionales
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10
 
Presentacion 1.10
Presentacion 1.10Presentacion 1.10
Presentacion 1.10
 
Historia Y EvolucióN De Los Lenguajes De ProgramacióN
Historia Y EvolucióN De Los Lenguajes De ProgramacióNHistoria Y EvolucióN De Los Lenguajes De ProgramacióN
Historia Y EvolucióN De Los Lenguajes De ProgramacióN
 

Similar a ClasesObjetosProgramas

instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajojorpical
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Axel
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppterosslo
 
Poo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacionPoo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacionjlmanmons
 
UD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdfUD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdfChiquteRobledo
 
Herencia_POO.ppt
Herencia_POO.pptHerencia_POO.ppt
Herencia_POO.pptAFGV96
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetosBelenMonse
 
Curso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias SocialesCurso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias SocialesNicolas Robinson-Garcia
 
U5. Arreglos de Objetos.pdf
U5. Arreglos de Objetos.pdfU5. Arreglos de Objetos.pdf
U5. Arreglos de Objetos.pdfTareasEMI
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicioJonathanSevilla9
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicioBelenRosales12
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicioKeevynMoreno
 

Similar a ClasesObjetosProgramas (20)

instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajo
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppt
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppt
 
Tema5
Tema5Tema5
Tema5
 
Poo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacionPoo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacion
 
UD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdfUD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdf
 
Netbeans ide
Netbeans ideNetbeans ide
Netbeans ide
 
Clase ed v7
Clase ed v7Clase ed v7
Clase ed v7
 
Herencia_POO.ppt
Herencia_POO.pptHerencia_POO.ppt
Herencia_POO.ppt
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetos
 
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIASUnidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIAS
 
Curso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias SocialesCurso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias Sociales
 
U5. Arreglos de Objetos.pdf
U5. Arreglos de Objetos.pdfU5. Arreglos de Objetos.pdf
U5. Arreglos de Objetos.pdf
 
30
3030
30
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicio
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicio
 
002
002002
002
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicio
 

Último

Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 

Último (20)

Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 

ClasesObjetosProgramas

  • 1. Tema 2. Objetos, Clases y ProgramasProgramas Introducción a la Informática y a la Programación (IIP) Curso 2011/12 Departamento de Sistemas Informáticos y Computación
  • 2. Contenidos 1. Estructura básica de una clase: atributos y métodos 2. Creación y uso de objetos: operadores new y punto (.) 3. Edición, compilación y ejecución en Java 4. Documentación de programas4. Documentación de programas 5. La organización en paquetes del lenguaje Java 6. Librerías de clases, herencia, la clase Object 20/09/2011 IIP - Curso 2011/12 2
  • 3. Objetos, clases y programas Se desea disponer de un espacio de dibujo a modo de pizarra, que puede tener un tamaño variable, un título y sobre la cuál se puedan dibujar círculos, rectángulos y cuadrados de diferentes tamaño, colores y en diferentes posiciones. Objetos y Características 20/09/2011 IIP - Curso 2011/12 3 Ámbito del problema Ámbito del programa Objetos y Clases Características Pizarra de diferentes tamaños y títulos Circulo de diferentes tamaños, colores y posición Cuadrado de diferentes tamaños, colores y posición Rectángulo de diferentes tamaños, colores y posición
  • 4. Clases y Objetos • Un objeto se puede definir como una agrupación o colección de datos y operaciones que poseen determinada estructura y mediante los cuales se modelan aspectos relevantes de un problema. • Los objetos que comparten cierto comportamiento se pueden agrupar en diferentes categorías llamadas clases.agrupar en diferentes categorías llamadas clases. • Una clase describe el comportamiento de cada uno de los objetos. Se dice entonces que el objeto es una instancia de la clase. • Java es un LOO y programar en Java es escribir las definiciones de las clases y utilizar esas clases para crear objetos de forma que, mediante los mismos, se represente adecuadamente el problema que se desea resolver. 20/09/2011 IIP - Curso 2011/12 4
  • 5. Clases en Java • Clases predefinidas y definidas por el programador. • Según la estructura de la clase y al uso que se va a hacer de ella se pueden distinguir tres tipos básicos de clases: – Clase-Tipo de dato: definen el conjunto de valores posibles que pueden tomar los objetos y las operaciones que sobreque pueden tomar los objetos y las operaciones que sobre éstos se pueden realizar. – Clase-Programa: son las que inician la ejecución del código. – Clase de Utilidades: son repositorios de operaciones que pueden utilizarse desde otras clases. 20/09/2011 IIP - Curso 2011/12 5
  • 6. Ejemplo de Clase-Tipo de dato /** Clase Circulo: define un círculo de un determinado radio, color y … */ public class CirculoCirculoCirculoCirculo { private double radio; private String color; private int centroX, centroY; /** crea un Circulo de radio 50, negro y centro en (100,100) */ public Circulo() { radio=50; color="negro"; centroX=100; centroY=100; } /** consulta el radio del Circulo. */ public double getRadio() { return radio; } /** actualiza el radio del Circulo a nuevoRadio. */ public void setRadio(double nuevoRadio) { radio = nuevoRadio; }public void setRadio(double nuevoRadio) { radio = nuevoRadio; } /** decrementa el radio del Circulo. */ public void decrece() { radio = radio / 1.3; } /** calcula el área del Circulo. */ public double area() { return 3.14 * radio * radio; } /** obtiene un String con las componentes del Circulo. */ public String toString() { String res="Circulo de radio "+ radio; res += ", color "+color+" y centro ("+centroX+","+centroY+")"; return res; } // más métodos } 20/09/2011 IIP - Curso 2011/12 6
  • 7. La importancia de documentar las clases import javax.swing.*; import java.awt.*; /** * Clase Pizarra: define una Pizarra sobre la que se pueden dibujar * elementos de tipo Circulo, Rectangulo y Cuadrado * @author Libro IIP-PRG * @version 2011 */ public class Pizarra extends JFrame { // Elementos por defecto de la Pizarra: private static int DIM_X = 200; private static int DIM_Y = 200; private static int NUM_MIN = 8; // Atributos almacen objetos gráficos private Object gOL[] = new Object[NUM_MIN]; private int numGO = 0; // Constantes figuras posibles 20/09/2011 IIP - Curso 2011/12 7 // Constantes figuras posibles private final static int DESCONOCIDO = -1; private final static int CIRCULO = 0; private final static int RECTANGULO = 1; private final static int CUADRADO = 2; // Constantes arrays de colores private static final String NOM_COLS[] = {"rojo","amarillo","verde","azul","naranja","negro"}; private static final Color COLS[] = {Color.red, Color.yellow, Color.green, Color.blue, Color.orange, Color.black}; private static final Color COLOR_POR_DEFECTO = Color.black; /** * construye una Pizarra por defecto en la que es posible * situar elementos gráficos. */ public Pizarra() { super("La pizarra por defecto"); setSize(DIM_X,DIM_Y); setContentPane(initPanel()); setVisible(true); } …
  • 8. Ejemplo de Clase-Programa /**Programa de prueba de las clases Circulo, Rectangulo y Pizarra * @author Libro IIP-PRG * @version 2011 */ public class PrimerPrograma { public static void main (String[] args) { // Iniciar el espacio para dibujar dándole nombre y dimensión Pizarra miPizarra = new Pizarra("ESPACIO DIBUJO",300,300); // Crear un Circulo de radio 50, amarillo, con centro en (100,100) Circulo c1 = new Circulo(50,"amarillo",100,100); // Añadirlo a la Pizarra y dibujarlo// Añadirlo a la Pizarra y dibujarlo miPizarra.add(c1); // Crear un Rectangulo de 30 por 30, azul, con centro en (125,125) Rectangulo r1 = new Rectangulo(30,30,"azul",125,125); // Añadirlo a la Pizarra y dibujarlo miPizarra.add(r1); // Crear un Rectangulo de 100 por 10, rojo, con centro en (50,155) Rectangulo r2 = new Rectangulo(100,10,"rojo",50,155); // Añadirlo a la Pizarra y dibujarlo miPizarra.add(r2); } } 20/09/2011 IIP - Curso 2011/12 8
  • 9. Estructura básica de una clase: atributos y métodos [modificadores] class NombreDeLaClaseNombreDeLaClaseNombreDeLaClaseNombreDeLaClase [ extends OtraClase ] { //////// DefiniciónDefiniciónDefiniciónDefinición dededede AtributosAtributosAtributosAtributos [[modificadores] tipo nomVar1; [modificadores] tipo nomVar2; ... ... ... [modificadores] tipo nomVarN; ][modificadores] tipo nomVarN; ] //////// DefiniciónDefiniciónDefiniciónDefinición dededede MétodosMétodosMétodosMétodos [[modificadores] tipo nomMetodo1 ([listaParams]) { cuerpo } [modificadores] tipo nomMetodo2 ([listaParams]) { cuerpo } ... ... ... [modificadores] tipo nomMetodoM ([listaParams]) { cuerpo } ] } 20/09/2011 IIP - Curso 2011/12 9
  • 10. Modificadores que definen el ámbito de la declaración: private y public • Toda la información declarada private es exclusiva del objeto e inaccesible desde fuera de la clase. – Cualquier intento de acceso a las variables de instancia radio o color que se realice fuera de la clase Circulo (p.e., en la clase PrimerPrograma) dará lugar a un error de compilación. private double radio; private String color; • Toda la información declarada es accesible desde fuera• Toda la información declarada public es accesible desde fuera de la clase. – Es el caso de los métodos getRadio o area de la clase Circulo. /** consulta el radio del Circulo. */ public double getRadio() { return radio; } /** calcula el área del Circulo. */ public double area() { return 3.14 * radio * radio; } 20/09/2011 IIP - Curso 2011/12 10
  • 11. Atributos de una clase • Los atributos o variables de instancia (nomVar1, nomVar2, ..., nomVarN) representan información propia de cada objeto de la clase y se declaran de un tipo de datos determinado, siendo definidos habitualmente de acceso privado. • El tipo de datos define los valores que el atributo puede tomar y las operaciones que sobre él se pueden realizar. 20/09/2011 IIP - Curso 2011/12 11 //////// DefiniciónDefiniciónDefiniciónDefinición dededede AtributosAtributosAtributosAtributos [[modificadores] tipo nomVar1; [modificadores] tipo nomVar2; ... ... ... [modificadores] tipo nomVarN; ] public class Circulo { private double radio; private String color; … }
  • 12. Métodos de una clase • Los métodos definen las operaciones que se pueden aplicar sobre los objetos de la clase y se describen indicando: – Su cabecera o perfil: nombre, tipo de su resultado y lista de parámetros que se requieren para el cálculo si fuera necesario. • Es posible que un método no devuelva un valor (void) – Su cuerpo: contiene la secuencia de instrucciones que se efectúan cuando se ejecute. • la instrucción es de aparición obligada (a menos que el resultado sea• la instrucción return es de aparición obligada (a menos que el resultado sea void) y su efecto es devolver el resultado calculado 20/09/2011 IIP - Curso 2011/12 12 public class CirculoCirculoCirculoCirculo { … public void setRadio(double nuevoRadio) { radio = nuevoRadio; } public double area() { return 3.14 * radio * radio; } }
  • 13. Métodos de una clase • Se pueden clasificar, atendiendo a su función con respecto al objeto del modo siguiente: – Constructores: permiten crear el objeto; – Modificadores: permiten alterar el estado (valores de las variables de instancia) del objeto; – Consultores: permiten conocer, sin alterar, el estado del objeto. 20/09/2011 IIP - Curso 2011/12 13 public class CirculoCirculoCirculoCirculo { … public Circulo() { radio=50; color="negro"; centroX=100; centroY=100; } public Circulo(double r, String c, int px, int py) { radio=r; color=c; centroX=px; centroY=py; } public double getRadio() { return radio; } public void setRadio(double nuevoRadio) { radio = nuevoRadio; } }
  • 14. El método main • En Java existe un método especial denominado main que indica el punto de inicio de ejecución del código. public static void main (String[] args) { … } • El programa más sencillo en Java se implementa como una clase con un único método main. class NombreDeClase { public static void main (String[] args) { … } 20/09/2011 IIP - Curso 2011/12 14 } } public class PrimerPrograma { public static void main (String[] args) { // Iniciar el espacio para dibujar dándole nombre y dimensión Pizarra miPizarra = new Pizarra("ESPACIO DIBUJO",300,300); // Crear un Circulo de radio 50, amarillo, con centro en (100,100) Circulo c1 = new Circulo(50,"amarillo",100,100); // Añadirlo a la Pizarra y dibujarlo miPizarra.add(c1); … } }
  • 15. Creación y uso de objetos: operadores new y punto • El operador new se utiliza para crear un objeto de una clase • El operador punto (.) se emplea para seleccionar el atributo deseado o el método específico que se desea utilizar sobre el objeto. public class PrimerPrograma { public static void main (String[] args) { 20/09/2011 IIP - Curso 2011/12 15 public static void main (String[] args) { // Iniciar el espacio para dibujar dándole nombre y dimensión Pizarra miPizarra = new Pizarra("ESPACIO DIBUJO",300,300); // Crear un Circulo de radio 50, amarillo, con centro en (100,100) Circulo c1 = new Circulo(50,"amarillo",100,100); // Añadirlo a la Pizarra y dibujarlo miPizarra.add(c1); … } }
  • 16. Edición, compilación y ejecución en java /** Programa de prueba de las clases Circulo, Rectangulo y Pizarra * @author Libro IIP-PRG * @version 2011 */ public class PrimerPrograma { public static void main (String[] args) { // Iniciar el espacio para dibujar dándole nombre y dimensión Pizarra miPizarra = new Pizarra("ESPACIO DIBUJO",300,300); // Crear Circulo de radio 50, amarillo, con centro en (100,100) Circulo c1 = new Circulo(50,"amarillo",100,100); // Añadirlo a la Pizarra y dibujarlo miPizarra.add(c1); // Crear Rectangulo de 30 por 30, azul, con centro en (125,125) Rectangulo r1 = new Rectangulo(30,30,"azul",125,125); // Añadirlo a la Pizarra y dibujarlo miPizarra.add(r1); // Crear Rectangulo de 100 por 10, rojo, con centro en (50,155) Rectangulo r2 = new Rectangulo(100,10,"rojo",50,155); // Añadirlo a la Pizarra y dibujarlo PrimerPrograma.java 20/09/2011 IIP - Curso 2011/12 16 // Añadirlo a la Pizarra y dibujarlo miPizarra.add(r2); } } javac PrimerPrograma.java … bytecodes … PrimerPrograma.class java PrimerPrograma.java
  • 17. Errores de programación • Es posible que aparezcan errores que imposibiliten la ejecución de un programa o que alteren su comportamiento con respecto a lo pretendido: – Errores de compilación: suceden cuando el programa incumple alguna de las características de la definición del lenguaje. • El compilador del Java es múltiple pasada, está organizado en fases que se ejecutan sólo si se ha pasado correctamente las fases previas. • Generalmente estos errores son sencillos de corregir gracias a la ayudaGeneralmente estos errores son sencillos de corregir gracias a la ayuda proporcionada por el compilador y al uso de la documentación del lenguaje. – Errores de ejecución: provocan un malfuncionamiento del programa: • Errores en tiempo de ejecución: provocan la detención de la ejecución • Errores lógicos: provocan que los resultados obtenidos no son correctos aunque puede parecer que el programa funciona correctamente. En general, los errores de ejecución pueden ser difíciles de detectar y resolver. 20/09/2011 IIP - Curso 2011/12 17
  • 18. Ejemplos de errores de compilación public class CirculoCirculoCirculoCirculo { private double radio; private String color; private int centroX, centroY; /** crea un Circulo de radio 50 , negro y centro en (100,100) */ plubic Circulo() { radio=50; color="negro"; centroX=100; centroY=100; } /** consulta el radio del Circulo. */ public double getRadio() { return radio; } /** actualiza el radio del Circulo a nuevoRadio. */ public void setRadio(double nuevoRadio) { radio = nuevoRadio; } /** decrementa el radio del Circulo. */ 20/09/2011 IIP - Curso 2011/12 18 public void decrece() { radio = radio / 1.3 } /** calcula el área del Circulo. */ public double area() { return 3.14 * radio * radio; } /** obtiene un String con las componentes del Circulo. */ public String toString() { String res="Circulo de radio "+ radio; res += ", color "+color+" y centro ("+centroX+","+centroY+")"; return res; } // más métodos }
  • 19. Ejemplo de error de ejecución /** Programa de prueba de las clases Circulo, Rectangulo y Pizarra * @author Libro IIP-PRG * @version 2011 */ public class PrimerPrograma { public static void main (String[] args) { // Iniciar el espacio para dibujar dándole nombre y dimensión Pizarra miPizarra = null; // Crear Circulo de radio 50, amarillo, Circulo c1 = new Circulo(50,"amarillo",100,100); // Añadirlo a la Pizarra y dibujarlo 20/09/2011 IIP - Curso 2011/12 19 // Añadirlo a la Pizarra y dibujarlo miPizarra.add(c1); // Crear Rectangulo de 30 por 30, azul, con centro en (125,125) Rectangulo r1 = new Rectangulo(30,30,"azul",125,125); // Añadirlo a la Pizarra y dibujarlo miPizarra.add(r1); // Crear Rectangulo de 100 por 10, rojo, con centro en (50,155) Rectangulo r2 = new Rectangulo(100,10,"rojo",50,155); // Añadirlo a la Pizarra y dibujarlo miPizarra.add(r2); } }
  • 20. Ejemplos de errores lógicos public class CirculoCirculoCirculoCirculo { private double radio; private String color; private int centroX, centroY; /** crea un Circulo de radio 50, negro y centro en (100,100) */ public Circulo() {radio=-50; color="negro"; centroX=100; centroY=100; } /** consulta el radio del Circulo. */ public double getRadio() { return radio; } /** actualiza el radio del Circulo a nuevoRadio. */ public void setRadio(double nuevoRadio) { radio = nuevoRadio; } /** decrementa el radio del Circulo. */ 20/09/2011 IIP - Curso 2011/12 20 public void decrece() { radio = radio * 1.3; } /** calcula el área del Circulo. */ public double area() { return 3.14 * radio; } /** obtiene un String con las componentes del Circulo. */ public String toString() { String res="Círculo de radio "+ radio; res += ", color "+color+" y centro ("+centroX+","+centroY+")"; return res; } // más métodos }
  • 21. Organización de clases: packages java • Un paquete (package) facilita la organización y uso de las clases ya definidas y la definición y uso de nuevas. • Un package del Java consiste en un grupo de clases que pueden ser importadas y, tras ello, utilizadas en otras clases. packagepackagepackagepackage libUtil; importimportimportimport javax.swing.*; importimportimportimport java.awt.*; public class Pizarra extends JFrame { • En Java, las clases se estructuran siempre en paquetes, cuando no se indica explícitamente, están en uno especial (anonymousanonymousanonymousanonymous). • El paquete java.lang se importa por defecto. Forman parte de este paquete las clases Object, String y Math. 20/09/2011 IIP - Curso 2011/12 21 public class Pizarra extends JFrame { ..... }
  • 22. Herencia. Jerarquía de clases: Object • En los LOO el mecanismo básico para el reuso del código es la herencia: permite definir nuevas clases extendiendo o restringiendo las funcionalidades de otras clases ya existentes. • La herencia permite modelar relaciones jerárquicas entre clases: la heredera tiene las mismas características pero tal vez, refinadas para definirla como un caso especial. • La librería de clases del lenguaje se encuentra organizada de• La librería de clases del lenguaje se encuentra organizada de forma jerárquica, siendo la base de dicha jerarquía ObjectObjectObjectObject. 20/09/2011 IIP - Curso 2011/12 22 java.lang.Objectjava.lang.Objectjava.lang.Objectjava.lang.Object |||| ++++--------java.awt.Componentjava.awt.Componentjava.awt.Componentjava.awt.Component |||| ++++--------java.awt.Containerjava.awt.Containerjava.awt.Containerjava.awt.Container |||| ++++--------java.awt.Windowjava.awt.Windowjava.awt.Windowjava.awt.Window |||| ++++--------java.awt.Framejava.awt.Framejava.awt.Framejava.awt.Frame |||| ++++--------javax.swing.JFramejavax.swing.JFramejavax.swing.JFramejavax.swing.JFrame