SlideShare una empresa de Scribd logo
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 1
Andres 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 8
Andres 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 9
Andres 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 4
Andres 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 5
Andres 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 6
Andres 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 7
Andres 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 3
Andres 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 programacion
Alejandro 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 Journey
Oren Farhi
 
Condicionales
CondicionalesCondicionales
Condicionales
Daniel Cáceres
 
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
Andres Garcia Garcia
 
Presentacion 1.10
Presentacion 1.10Presentacion 1.10
Presentacion 1.10
Andres 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óN
da4
 

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 Introducción a la programación y la informática. Tema 2

instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajo
jorpical
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
Gloria Isabel Bautista Lasprilla
 
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
Axel
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppt
erosslo
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppt
miguel checa
 
Java2-Clases.ppt Programación Orientada a Objetos
Java2-Clases.ppt Programación Orientada a ObjetosJava2-Clases.ppt Programación Orientada a Objetos
Java2-Clases.ppt Programación Orientada a Objetos
Jairo887360
 
Tema5
Tema5Tema5
Poo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacionPoo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacion
jlmanmons
 
UD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdfUD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdf
ChiquteRobledo
 
Netbeans ide
Netbeans ideNetbeans ide
Netbeans ide
Proffesional
 
Clase ed v7
Clase ed v7Clase ed v7
Clase ed v7
TimToucan
 
Herencia_POO.ppt
Herencia_POO.pptHerencia_POO.ppt
Herencia_POO.ppt
AFGV96
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetos
BelenMonse
 
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIASUnidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Cindy Adriana Bohórquez Santana
 
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
Nicolas Robinson-Garcia
 
U5. Arreglos de Objetos.pdf
U5. Arreglos de Objetos.pdfU5. Arreglos de Objetos.pdf
U5. Arreglos de Objetos.pdf
TareasEMI
 
30
3030
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicio
JonathanSevilla9
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicio
BelenRosales12
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicio
OliverGuaman1
 

Similar a Introducción a la programación y la informática. Tema 2 (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
 
Java2-Clases.ppt Programación Orientada a Objetos
Java2-Clases.ppt Programación Orientada a ObjetosJava2-Clases.ppt Programación Orientada a Objetos
Java2-Clases.ppt Programación Orientada a Objetos
 
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
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicio
 

Último

RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docxRETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
100078171
 
El Cerebro se Cambia a si Mismo-Norman Doidge.pdf
El Cerebro se Cambia a si Mismo-Norman Doidge.pdfEl Cerebro se Cambia a si Mismo-Norman Doidge.pdf
El Cerebro se Cambia a si Mismo-Norman Doidge.pdf
Robert Zuñiga Vargas
 
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptxPPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
gamcoaquera
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Juan Martín Martín
 
Guia para Docentes como usar ChatGPT Mineduc Ccesa007.pdf
Guia para Docentes como usar ChatGPT  Mineduc Ccesa007.pdfGuia para Docentes como usar ChatGPT  Mineduc Ccesa007.pdf
Guia para Docentes como usar ChatGPT Mineduc Ccesa007.pdf
Demetrio Ccesa Rayme
 
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdfBlogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
lautyzaracho4
 
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJAPANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
estroba5
 
Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024
israelsouza67
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
AlexDeLonghi
 
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdfCUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
Inslvarez5
 
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptxEVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
Victor Elizalde P
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
josseanlo1581
 
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptxNuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
lautyzaracho4
 
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdfGuia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Demetrio Ccesa Rayme
 
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Juan Martín Martín
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
Sandra Mariela Ballón Aguedo
 
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
ViriEsteva
 
Power Point: El espiritismo desenmascarado
Power Point: El espiritismo desenmascaradoPower Point: El espiritismo desenmascarado
Power Point: El espiritismo desenmascarado
https://gramadal.wordpress.com/
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
Jose Luis Jimenez Rodriguez
 
2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado
GiselaBerrios3
 

Último (20)

RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docxRETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
 
El Cerebro se Cambia a si Mismo-Norman Doidge.pdf
El Cerebro se Cambia a si Mismo-Norman Doidge.pdfEl Cerebro se Cambia a si Mismo-Norman Doidge.pdf
El Cerebro se Cambia a si Mismo-Norman Doidge.pdf
 
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptxPPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
 
Guia para Docentes como usar ChatGPT Mineduc Ccesa007.pdf
Guia para Docentes como usar ChatGPT  Mineduc Ccesa007.pdfGuia para Docentes como usar ChatGPT  Mineduc Ccesa007.pdf
Guia para Docentes como usar ChatGPT Mineduc Ccesa007.pdf
 
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdfBlogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
 
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJAPANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
 
Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
 
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdfCUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
 
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptxEVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
 
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptxNuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
 
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdfGuia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
 
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
 
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
 
Power Point: El espiritismo desenmascarado
Power Point: El espiritismo desenmascaradoPower Point: El espiritismo desenmascarado
Power Point: El espiritismo desenmascarado
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
 
2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado
 

Introducción a la programación y la informática. Tema 2

  • 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