SlideShare una empresa de Scribd logo
1 de 17
PAQUETES Y CLASES
PAQUETE.-
Definición.- Es un conjunto de clases que se han agrupado porque tienen alguna relación,
pueden ser clases de un mismo proyecto, o clases de un mismo estilo.
Declaración.- Se declaran en la clase genérica componente utilizando la palabra package
seguida del nombre del paquete. Esta instrucción debe ir al inicio del archivo y debe ser la
primera sentencia que debe ejecutarse:
package factura;
public class persona{
---------------
}
Creación.- Al crearse un paquete se crea una carpeta con el mismo nombre del paquete,
En el caso del ejemplo se creara la carpeta factura si se coloca la misma instrucción
package al inicio de otras clase se lograra agrupar varias clase en el mismo paquete
Para ello luego de crear el area de trabajo y la clase principal elegir la carpeta src y
adicionar una nueva clase, en el recuadro que indica nombre del paquete escribir el nombre
del
paquete asi Luego en la ventana de creación de la clase
consignar el nombre del paquete
2
Utilización.- Para utilizar las clases que están en un paquete(package), se utiliza la
sentencia import. Esto permitirá utilizarla haciendo referencia a una clase desde otra que se
encuentra fuera del paquete. Para ello tendrá que escribir
import nombredelpaquete.nombredelaclase;
ejemplo import factura.persona;
La sentencia anterior permitirá tener acceso pleno a todos los miembros (variables y
metodos) de la clase.persona del paquete factura
Si se desea tener acceso a todas las clases del paquete bastaría reemplazar la sentencia
anterior por import factura.*;
CLASE
Definición.- Es una plantilla que especifica los atributos y el comportamiento de un
determinado tipo de objeto. Los atributos se especifican mediante variables (variables
miembro) y el comportamiento mediante métodos (métodos miembro). En la programación
por objetos una clase define un nueto tipo de dato. Una vez definido este nuevo tipo se
puede utilizar para crear objetos.
Declaracion y estructura de una clase
package nombredelpaquete;
public class nombredeclase{
// declaración de variables miembro
- - - - - - - - - - - - - - - - - - - - - -
// Definición el constructor
Public nombredeclase(parámetros){
- - - - - - - - - - - - - - - - - - - - - -
}
//Definición de métodos miembro
Public nombredeclase(parámetros){
- - - - - - - - - - - - - - - - - - - - - -
}
}
OBSERVACIONES una clase posee
Atributos: que son todas las variables que tendrá la clase.
Constructor: es un método que inicializa dichas variables.
Métodos: los que sean necesarios para el manejo de dicha clase.
3
CONSTRUCTOR Y OBJETOS
CONSTRUCTOR
Constructor es un método especial que se utiliza para inicializar un objeto inmediatamente
después de su creación.
El constructor de una clase debe tener el mismo nombre de su clase y no tener tipo de retorno
Si una clase no define un constructo, Java crea un constructor por defecto que no tiene
parámetros y que no realiza ninguna inicialización especial.
Si el constructor es definido por segunda o tercera vez ocasiona una sobrecarga.
public class persona{
//atributos: acceso tipo nombre_variable;
public String nombre;
private int edad;
//constructor, este método debe tener el mismo nombre de la Clase
public persona( ){
}
//métodos propios
}// fin de la clase persona
Objeto: es una instancia de una clase (entendiéndose como ejemplar de)
La JVM, carga a la memoria el código de btes de una clase la primera vez que la clase sea
mencionada durante la ejecución del programa. De aquí en adelante la clase cargada será
utilizada como una fabrica de objetos. Es decir un objeto no es mas que una variable cuyo
tipo es una clase, si es propia de Java (JLabel, JButton,etc.) o creada por nosotros. Esta
llamada de clase tendrá la siguiente forma:
Creación de objetos
Se declara una variable referencia que almacenara la direion de memoria del objeto a crear
asi: nombredeclase nombrereferencia;
Se crea en seguida el objeto y se le asigna una dirección de memoria a la variable referencia
en forma dinámica asi: nombredereferencia = new nombredeclase(argumentos): Al nombre
de referencia lo vamos a usar como una variable.
Los dos pasos anteriores se pueden hacer en uno solo:
nombredeclase variable = new nombre de clase(argumentos);
4
ejemplo persona p = new persona();
La variable p es de tipo persona, la cual contendrá dicha clase. De esta manera podremos
utilizar todos los métodos y variables creados en esta clase.
ACCESO A LOS MIEMBROS DE UNA CLASE
Para acceder a los miembros de una clase se escribe el nombre la la variable de referencia,
un punto y el nombre del miembro(variable miembro o método miembro) al que se desea
acceder.
Ejemplo Crear un proyecto con dos clases una llamada principal y otra llamada persona
la clase Persona en el paquete ficha que tenga como atributos públicos:nombre, apellido,
edad, talla y peso. Implemente los siguientes métodos:
- Un constructor que inicialice a los atributos.
- Un método que retorne si la persona es mayor o menor de edad.
En la clase principal
- Crear un objeto persona con datos fijos e imprimir sus datos.
Modificar los datos del objeto creado:
- Aumentar la edad actual en 5 años
- Disminuir el peso actual en 3 kg
Luego, imprima la nueva edad y el nuevo peso.
mport java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import ficha.persona;
public class Principal extends JApplet
implements ActionListener{
// Declaración de variables globales
JButton btnProcesar, btnBorrar;
JTextArea txtS;
JScrollPane scpScroll;
public void init() {
getContentPane().setLayout(null);
getContentPane().setBackground(new
Color(214,211,206));
// btnProcesar
btnProcesar = new JButton("Procesar");
btnProcesar.setBounds(50, 30, 100, 20);
btnProcesar.addActionListener(this);
getContentPane().add(btnProcesar);
// btnBorrar
btnBorrar = new JButton("Borrar");
btnBorrar.setBounds(180, 30, 100, 20);
btnBorrar.addActionListener(this);
getContentPane().add(btnBorrar);
// txtS
txtS = new JTextArea();
txtS.setFont(new Font("monospaced", 0,
12));
//scpScroll
scpScroll=new JScrollPane(txtS);
scpScroll.setBounds(10, 70, 350, 300);
getContentPane().add(scpScroll);
}
// Procesa eventos de tipo ActionEvent
public void actionPerformed( ActionEvent e
){
if( e.getSource() == btnProcesar )
procesar();
if( e.getSource() == btnBorrar )
borrar();
}
void procesar(){
persona p = new persona(
"Mabel",
5
"Romo",
27,
165.5,
50.5);
imprimir("Nombre : " + p.nombre);
imprimir("Apellido : " + p.apellido);
imprimir("Edad : " + p.edad);
imprimir("Peso : " + p.peso);
imprimir("Talla : " + p.talla);
imprimir("Es Mayor : " +
p.isMayorDeEdad());
p.edad += 5;
p.peso -= 3;
imprimir("---------------------------");
imprimir("Nombre : " + p.nombre);
imprimir("Apellido : " + p.apellido);
imprimir("Edad : " + p.edad);
imprimir("Peso : " + p.peso);
imprimir("Talla : " + p.talla);
imprimir("Es Mayor : " +
p.isMayorDeEdad());
}
void borrar(){
imprimir();
}
void imprimir( String s ){
txtS.append(s + "n");
}
void imprimir(){
txtS.setText("");
}
}
CLASE PERSONA
package ficha;
public class persona {
public String nombre, apellido;
public int edad;
public double talla, peso;
public persona(
String nombre,
String apellido,
int edad,
double talla,
double peso){
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
this.talla = talla;
this.peso = peso;
}
public boolean isMayorDeEdad(){
if(edad>=18) return true;
else return false;
}
}
EJERCICIOS
Ejercicio:
1. Crear la clase video en el paquete casavideo que tenga como atributos
privados:codigo, nombre del video, duración y precio en soles.Implemente los
siguientes métodos:
 Un constructor que inicialice a los atributos.
 Métodos de acceso set y get para todos los atributos.
 Un método que retorne el precio del video en dolares.
 En la clase principal crear un objeto video que cada vez que se haga clic al botón
procesar con datos extraídos de la GUI.
a. Aumente el precio del video en 2 soles.
b. Imprima el nuevo precio del video en dólares.
2. Crear la clase empleado en el paquete empresa que tenga como atributos privados:
codigo, nombre, horas trabajadas y tarifa. Implemente los siguientes métodos:
 Un constructor que inicialice a los atributos.
6
 métodos de acceso: set/get para cada atributo.
 un método que retorne el sueldo bruto (horas*tarifa)
 un método que retorne el descuento (13% del sueldo bruto)
 un método que retorne el sueldo neto (neto = bruto - descuento)
 En la clase principal:Cree un objeto empleado cada vez que le de clic al botón
procesar cuyos datos se ingresaran desde la GUI e imprima sus atributos, el sueldo
bruto, descuento y sueldo neto.
a. Aumente la tarifa actual en 10 soles e imprima la nueva tarifa y el
b. sueldo neto del empleado.
3. Realizar un programa que defina la clase alumno dentro del paquete notas que permita
registrar un nombre y 3 notas. y contenga un método que calcule el promedio y desde
la clase Principal acceder a la clase alumno enviándole los datos. e imprimiendo el
reporte
CONTROL DE ACCESO Y ENCAPSULAMIENTO
CONTROL DE ACCESO
Una clase puede controlar que partes de un programa puedan acceder a los componentes o
miembros de su clase: variables miembro y métodos miembro.
Una clase bien diseñada impide el acceso directo a sus variables miembro proporcionado a
cambio un conjunto de METODOS DE ACCESO que sirvan como intermediarios entre las
variables miembro.
Algunos métodos de la clase pueden ser necesarios solo desde el interior de la clase por lo
ue deben quedar restringidos solo para uso interno
Especificador
de acceso
Acceso a los miembros
Desde la
misma clase
Desde una
subclase
Desde una
clase del mismo
paquete
Desde el
exterior de la
misma clase
public X X X X
Private X
protected X X X
sinespecificar X X
ENCAPSULAMIENTO
Es la capacidad que tiene una aplicación de ocultar detalles internos del comportamiento
de una clase y dar a conocer solo los detalles ue sean necesario para el resto de las clase.
Este ocultamiento permite restringir y controlar el uso de la clase.
Se restringe porque existen ciertos atributos y métodos privados o protegidos y se controla
porque habrán ciertos mecanismos para modificar el estado de una clase como por ejemplo
los métodos de acceso
Ejercicios
7
26. ARREGLOS (ARRAY)
26.1 Definición: son estructuras de datos, donde cada elemento conserva una posición en
memoria. Los datos de un array, están diseñados de forma que unos están a continuación de
otros.
Para manejar la posición de sus elementos disponen de un sub-índice:
- Si tiene un sub-índice serán “unidimensionales” o “vectores”.
- Si tienen 2 sub-índices serán “bidimensionales” o “matrices”.
- Si tienen más de 2 sub-índices serán multidimensionales.
Los arrays serán del mismo tipo de los datos que guardaremos en estos.
26.2 Arreglos Unidimensionales: los array serán declarados de la misma manera que
cualquier variable, con la diferencia que se le agregarán un par de corchetes “[ ]” al final de
su nombre, lo que representará que son de una sola dimensión. A continuación los tipos
básicos para declarar un array.
Array de tipo cadena:
String nombre[ ];
posición 0
posición 1
posición 2
posición 3
Array de tipo entero:
Laura
Esteban
Paula
Juan
8
int edad[ ];
posición 0
posición 1
posición 2
posición 3
Array de tipo real:
double talla[ ];
posición 0
posición 1
posición 2
posición 3
19
21
18
23
1.55
1.72
1.60
1.68
9
Otra forma de declaración es colocando los corchetes luego del tipo del array.
Ejemplo:
String[ ] nombre;
int[ ] edad;
double[ ] talla;
Creación del array: para la creación del array se usará la siguiente forma:
nombre_array = new tipo[ tamaño];
Ejemplo:
nombre = new String[4];
edad = new int[4];
talla = new double[4];
Estos array tienen 4 espacios para datos, la posición de cada dato va del 0 al 3.
Ingresar elementos: para el ingreso de datos a un array, es necesario mencionar el
nombre del array y la posición en la que se agregará dicho dato.
Ejemplo: ingresar los datos del array nombre.
nombre[0] = “Laura”;
nombre [1] = “Esteban”;
nombre [2] = “Paula”;
nombre [3] = “Juan”;
10
Otra forma de cargar los datos es:
nombre[ ] = {“Laura”,” Esteban”,“ Paula”,” Juan”};
Acceso a un elemento: para acceder a un elemento de cualquier array, es necesario
mencionar el nombre del array y la posición, del dato que necesitamos.
Ejemplo: imprimir los datos del array edad.
imprimir(“Edad de la posición 0: ”+edad[0] );
imprimir(“Edad de la posición 1: ”+edad[1] );
imprimir(“Edad de la posición 2: ”+edad[2] );
imprimir(“Edad de la posición 3: ”+edad[3] );
Lo más aconsejable para manejar arrays es crear Clases propias, las cuales nos permitirán
manejar en una clase la GUI y la lógica, y en la otra clase el array y los métodos necesarios
para su funcionamiento.
A continuación mostrares un pequeño programa que permite el ingreso de precios y los
almacena en el array.
Clase Principal: “ArregloUnidimensional”
// invocación de librerías
import java.awt.*;
import java.awt.event.*;
11
import javax.swing.*;
public class ArregloUnidimensional extends JApplet implements ActionListener{
//declaración de variables globales
JLabel lblTitulo,lblPrecio;
JTextField txtPrecio;
JButton btnProcesar,btnBorrar;
JTextArea txtArea;
JScrollPane scpScroll;
//llamada a la Clase Precios
/*creamos una variable "p" de tipo Precios que contendrá a la clase Precios
con esto podremos utilizar todos los métodos creados en esa clase*/
Precios p=new Precios( );
// GUI
public void init( ) {
getContentPane( ).setLayout(null);
//creamos el titulo centrado
lblTitulo = new JLabel("REGISTRO DE PRECIOS",SwingConstants.CENTER);
lblTitulo.setBounds(150,20,200,20);
getContentPane( ).add(lblTitulo);
lblPrecio = new JLabel("Ingrese un precio:");
lblPrecio.setBounds(50,60,150,20);
getContentPane( ).add(lblPrecio);
txtPrecio = new JTextField( );
txtPrecio.setBounds(200,60,50,20);
getContentPane( ).add(txtPrecio);
12
btnProcesar = new JButton("Procesar");
btnProcesar.setBounds(125,100,100,20);
btnProcesar.addActionListener(this);
getContentPane( ).add(btnProcesar);
btnBorrar = new JButton("Borrar");
btnBorrar.setBounds(275,100,100,20);
btnBorrar.addActionListener(this);
getContentPane( ).add(btnBorrar);
txtArea = new JTextArea( );
//el área no se podrá editar
txtArea.setEditable(false);
scpScroll = new JScrollPane(txtArea);
scpScroll.setBounds(50,150,400,130);
getContentPane( ).add(scpScroll);
}
public void actionPerformed(ActionEvent e){
if(e.getSource( ) = = btnProcesar)
procesar( );
if(e.getSource( ) = = btnBorrar)
borrar( );
}
13
//método procesar
public void procesar( ){
//leemos el precio ingresado en la GUI
double precio = getPrecio( );
//verificamos si el array esta lleno
if(p.getIndice( ) = = p.getTamaño( ))
mensaje("El array esta lleno");
//sino, si hay espacio
else{
//adicionamos un precio al array
p.adicionar(precio);
borrar( );
listar( );
}
}
//método listar, mostrara los precios del array
public void listar( ){
//recorremos todo el array imprimiendo los precios en cada posición
for(int i=0;i<p.getIndice( );i++)
imprimir("Precio de la posicion "+i+" : S/."+p.obtener(i));
}
//método que lee el precio de la GUI
14
public double getPrecio( ){
return Double.parseDouble(txtPrecio.getText( ));
}
//método borrar
public void borrar( ){
txtPrecio.setText("");
txtArea.setText("");
txtPrecio.requestFocus( );
}
//método imprimir
public void imprimir(String s){
txtArea.append(s+"n");
}
//método mensaje para validar
public void mensaje(String s){
JOptionPane.showMessageDialog(this,s,"ERROR",0);
}
}//fin del programa
15
Clase genérica: “Precios”
/*en la clase Precios creamos nuestro array el cual nos permitirá
guardar precios en la memoria*/
public class Precios{
//declaramos nuestras variables
private double array[ ];
private int indice;
//método constructor inicializa variables
public Precios( ){
//creamos nuestro array de tipo double el cual contendrá máximo 10 precios
array = new double[10];
//inicializamos nuestro índice en 0
índice = 0;
}
//método que retorna el índice
public int getIndice( ){
return indice;
}
16
//método que retorna el tamaño máximo del array
public int getTamaño( ){
return array.length;
}
//método que recibe un precio y lo adiciona al array
public void adicionar(double precio){
array[indice]=precio;
indice++;
}
//método que recibe una posicion y retorna el precio de esa posicion
public double obtener(int posicion){
return array[posicion];
}
}//fin de la clase Precios
Como vemos, en la clase genérica se manejan 4 métodos básicos:
public int getIndice( ){
return indice;
}
Este método nos retornara el índice, esto nos permitirá saber en que posición del array
nos encontramos, nos será útil para las repeticiones como la del método listar de la clase
principal.
public int getTamaño( ){
return array.length;
17
}
Este método nos retornará el tamaño máximo del array, en este caso nos retornará 10, ya
que ese fue el tamaño que le dimos a nuestro array en el constructor. Como vemos basta
con colocar el nombre del array seguido de la función “length” que significa “longitud”.
public void adicionar(double precio){
array[indice]=precio;
indice++;
}
Este método recibirá un “precio” de tipo “double” y lo adicionara en el array en la
posición en la que se encuentre en el “índice”, la primera vez agregará un precio en la
posición “0”, ya que este fue el valor inicial que le dimo, luego aumentamos el índice en
“1”, así la próxima vez que se ingrese un dato, este será ingresado en la siguiente posición.
public double obtener(int posicion){
return array[posicion];
}
Este método recibirá una “posición” y retorna el valor guardado en dicha posición. Por
ejemplo visualicemos los datos ingresados en el ejemplo anterior.
Si a este método le enviáramos la posición “2” este nos retornará “array[ 2 ]” lo que es
igual a “45.0”.

Más contenido relacionado

La actualidad más candente

Manual poo-unidad-visual-basic
Manual poo-unidad-visual-basicManual poo-unidad-visual-basic
Manual poo-unidad-visual-basicRaul Hernandez
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Renny Batista
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaAngel Vázquez Patiño
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetoschutas666
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IEKaren Olan
 
01 clases y objetos, POO Visual Basic .NET
01 clases y objetos, POO Visual Basic .NET01 clases y objetos, POO Visual Basic .NET
01 clases y objetos, POO Visual Basic .NETjuan vera castillo
 
Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Ezer Ayala Mutul
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevjtk1
 

La actualidad más candente (19)

Leguaje de programacion C#
Leguaje de programacion C#Leguaje de programacion C#
Leguaje de programacion C#
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 
Qué es la poo
Qué es la pooQué es la poo
Qué es la poo
 
Programación 1: modularización
Programación 1: modularizaciónProgramación 1: modularización
Programación 1: modularización
 
Manual poo-unidad-visual-basic
Manual poo-unidad-visual-basicManual poo-unidad-visual-basic
Manual poo-unidad-visual-basic
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Definición de clases en POO
Definición de clases en POODefinición de clases en POO
Definición de clases en POO
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Conceptos Basicos de POO
Conceptos Basicos de POOConceptos Basicos de POO
Conceptos Basicos de POO
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IE
 
01 clases y objetos, POO Visual Basic .NET
01 clases y objetos, POO Visual Basic .NET01 clases y objetos, POO Visual Basic .NET
01 clases y objetos, POO Visual Basic .NET
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
10.herencia en c++
10.herencia en c++10.herencia en c++
10.herencia en c++
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prev
 

Similar a Lp2docclases (20)

Presentacion4
Presentacion4Presentacion4
Presentacion4
 
1 -programacion_oo
1  -programacion_oo1  -programacion_oo
1 -programacion_oo
 
Sesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesSesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clases
 
Lab herencia
Lab herenciaLab herencia
Lab herencia
 
JAVA OO - TEMA 01 - CLASES Y OBJETOS
JAVA OO - TEMA 01 - CLASES Y OBJETOSJAVA OO - TEMA 01 - CLASES Y OBJETOS
JAVA OO - TEMA 01 - CLASES Y OBJETOS
 
Tutorial 3
Tutorial 3Tutorial 3
Tutorial 3
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docx
 
Unidad o informatica
Unidad o informaticaUnidad o informatica
Unidad o informatica
 
Herencia lenguaje de programacion
Herencia lenguaje de programacionHerencia lenguaje de programacion
Herencia lenguaje de programacion
 
Unidad 2 clases y objetos
Unidad 2 clases y objetosUnidad 2 clases y objetos
Unidad 2 clases y objetos
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con php
 
Herencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaHerencia y Polimorfismo en Java
Herencia y Polimorfismo en Java
 
programacion
programacionprogramacion
programacion
 
Java
JavaJava
Java
 
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOSJAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Benita ppp unidad 1
Benita ppp unidad 1Benita ppp unidad 1
Benita ppp unidad 1
 
Datos previos
Datos previosDatos previos
Datos previos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 

Lp2docclases

  • 1. PAQUETES Y CLASES PAQUETE.- Definición.- Es un conjunto de clases que se han agrupado porque tienen alguna relación, pueden ser clases de un mismo proyecto, o clases de un mismo estilo. Declaración.- Se declaran en la clase genérica componente utilizando la palabra package seguida del nombre del paquete. Esta instrucción debe ir al inicio del archivo y debe ser la primera sentencia que debe ejecutarse: package factura; public class persona{ --------------- } Creación.- Al crearse un paquete se crea una carpeta con el mismo nombre del paquete, En el caso del ejemplo se creara la carpeta factura si se coloca la misma instrucción package al inicio de otras clase se lograra agrupar varias clase en el mismo paquete Para ello luego de crear el area de trabajo y la clase principal elegir la carpeta src y adicionar una nueva clase, en el recuadro que indica nombre del paquete escribir el nombre del paquete asi Luego en la ventana de creación de la clase consignar el nombre del paquete
  • 2. 2 Utilización.- Para utilizar las clases que están en un paquete(package), se utiliza la sentencia import. Esto permitirá utilizarla haciendo referencia a una clase desde otra que se encuentra fuera del paquete. Para ello tendrá que escribir import nombredelpaquete.nombredelaclase; ejemplo import factura.persona; La sentencia anterior permitirá tener acceso pleno a todos los miembros (variables y metodos) de la clase.persona del paquete factura Si se desea tener acceso a todas las clases del paquete bastaría reemplazar la sentencia anterior por import factura.*; CLASE Definición.- Es una plantilla que especifica los atributos y el comportamiento de un determinado tipo de objeto. Los atributos se especifican mediante variables (variables miembro) y el comportamiento mediante métodos (métodos miembro). En la programación por objetos una clase define un nueto tipo de dato. Una vez definido este nuevo tipo se puede utilizar para crear objetos. Declaracion y estructura de una clase package nombredelpaquete; public class nombredeclase{ // declaración de variables miembro - - - - - - - - - - - - - - - - - - - - - - // Definición el constructor Public nombredeclase(parámetros){ - - - - - - - - - - - - - - - - - - - - - - } //Definición de métodos miembro Public nombredeclase(parámetros){ - - - - - - - - - - - - - - - - - - - - - - } } OBSERVACIONES una clase posee Atributos: que son todas las variables que tendrá la clase. Constructor: es un método que inicializa dichas variables. Métodos: los que sean necesarios para el manejo de dicha clase.
  • 3. 3 CONSTRUCTOR Y OBJETOS CONSTRUCTOR Constructor es un método especial que se utiliza para inicializar un objeto inmediatamente después de su creación. El constructor de una clase debe tener el mismo nombre de su clase y no tener tipo de retorno Si una clase no define un constructo, Java crea un constructor por defecto que no tiene parámetros y que no realiza ninguna inicialización especial. Si el constructor es definido por segunda o tercera vez ocasiona una sobrecarga. public class persona{ //atributos: acceso tipo nombre_variable; public String nombre; private int edad; //constructor, este método debe tener el mismo nombre de la Clase public persona( ){ } //métodos propios }// fin de la clase persona Objeto: es una instancia de una clase (entendiéndose como ejemplar de) La JVM, carga a la memoria el código de btes de una clase la primera vez que la clase sea mencionada durante la ejecución del programa. De aquí en adelante la clase cargada será utilizada como una fabrica de objetos. Es decir un objeto no es mas que una variable cuyo tipo es una clase, si es propia de Java (JLabel, JButton,etc.) o creada por nosotros. Esta llamada de clase tendrá la siguiente forma: Creación de objetos Se declara una variable referencia que almacenara la direion de memoria del objeto a crear asi: nombredeclase nombrereferencia; Se crea en seguida el objeto y se le asigna una dirección de memoria a la variable referencia en forma dinámica asi: nombredereferencia = new nombredeclase(argumentos): Al nombre de referencia lo vamos a usar como una variable. Los dos pasos anteriores se pueden hacer en uno solo: nombredeclase variable = new nombre de clase(argumentos);
  • 4. 4 ejemplo persona p = new persona(); La variable p es de tipo persona, la cual contendrá dicha clase. De esta manera podremos utilizar todos los métodos y variables creados en esta clase. ACCESO A LOS MIEMBROS DE UNA CLASE Para acceder a los miembros de una clase se escribe el nombre la la variable de referencia, un punto y el nombre del miembro(variable miembro o método miembro) al que se desea acceder. Ejemplo Crear un proyecto con dos clases una llamada principal y otra llamada persona la clase Persona en el paquete ficha que tenga como atributos públicos:nombre, apellido, edad, talla y peso. Implemente los siguientes métodos: - Un constructor que inicialice a los atributos. - Un método que retorne si la persona es mayor o menor de edad. En la clase principal - Crear un objeto persona con datos fijos e imprimir sus datos. Modificar los datos del objeto creado: - Aumentar la edad actual en 5 años - Disminuir el peso actual en 3 kg Luego, imprima la nueva edad y el nuevo peso. mport java.awt.event.*; import java.awt.*; import javax.swing.*; import ficha.persona; public class Principal extends JApplet implements ActionListener{ // Declaración de variables globales JButton btnProcesar, btnBorrar; JTextArea txtS; JScrollPane scpScroll; public void init() { getContentPane().setLayout(null); getContentPane().setBackground(new Color(214,211,206)); // btnProcesar btnProcesar = new JButton("Procesar"); btnProcesar.setBounds(50, 30, 100, 20); btnProcesar.addActionListener(this); getContentPane().add(btnProcesar); // btnBorrar btnBorrar = new JButton("Borrar"); btnBorrar.setBounds(180, 30, 100, 20); btnBorrar.addActionListener(this); getContentPane().add(btnBorrar); // txtS txtS = new JTextArea(); txtS.setFont(new Font("monospaced", 0, 12)); //scpScroll scpScroll=new JScrollPane(txtS); scpScroll.setBounds(10, 70, 350, 300); getContentPane().add(scpScroll); } // Procesa eventos de tipo ActionEvent public void actionPerformed( ActionEvent e ){ if( e.getSource() == btnProcesar ) procesar(); if( e.getSource() == btnBorrar ) borrar(); } void procesar(){ persona p = new persona( "Mabel",
  • 5. 5 "Romo", 27, 165.5, 50.5); imprimir("Nombre : " + p.nombre); imprimir("Apellido : " + p.apellido); imprimir("Edad : " + p.edad); imprimir("Peso : " + p.peso); imprimir("Talla : " + p.talla); imprimir("Es Mayor : " + p.isMayorDeEdad()); p.edad += 5; p.peso -= 3; imprimir("---------------------------"); imprimir("Nombre : " + p.nombre); imprimir("Apellido : " + p.apellido); imprimir("Edad : " + p.edad); imprimir("Peso : " + p.peso); imprimir("Talla : " + p.talla); imprimir("Es Mayor : " + p.isMayorDeEdad()); } void borrar(){ imprimir(); } void imprimir( String s ){ txtS.append(s + "n"); } void imprimir(){ txtS.setText(""); } } CLASE PERSONA package ficha; public class persona { public String nombre, apellido; public int edad; public double talla, peso; public persona( String nombre, String apellido, int edad, double talla, double peso){ this.nombre = nombre; this.apellido = apellido; this.edad = edad; this.talla = talla; this.peso = peso; } public boolean isMayorDeEdad(){ if(edad>=18) return true; else return false; } } EJERCICIOS Ejercicio: 1. Crear la clase video en el paquete casavideo que tenga como atributos privados:codigo, nombre del video, duración y precio en soles.Implemente los siguientes métodos:  Un constructor que inicialice a los atributos.  Métodos de acceso set y get para todos los atributos.  Un método que retorne el precio del video en dolares.  En la clase principal crear un objeto video que cada vez que se haga clic al botón procesar con datos extraídos de la GUI. a. Aumente el precio del video en 2 soles. b. Imprima el nuevo precio del video en dólares. 2. Crear la clase empleado en el paquete empresa que tenga como atributos privados: codigo, nombre, horas trabajadas y tarifa. Implemente los siguientes métodos:  Un constructor que inicialice a los atributos.
  • 6. 6  métodos de acceso: set/get para cada atributo.  un método que retorne el sueldo bruto (horas*tarifa)  un método que retorne el descuento (13% del sueldo bruto)  un método que retorne el sueldo neto (neto = bruto - descuento)  En la clase principal:Cree un objeto empleado cada vez que le de clic al botón procesar cuyos datos se ingresaran desde la GUI e imprima sus atributos, el sueldo bruto, descuento y sueldo neto. a. Aumente la tarifa actual en 10 soles e imprima la nueva tarifa y el b. sueldo neto del empleado. 3. Realizar un programa que defina la clase alumno dentro del paquete notas que permita registrar un nombre y 3 notas. y contenga un método que calcule el promedio y desde la clase Principal acceder a la clase alumno enviándole los datos. e imprimiendo el reporte CONTROL DE ACCESO Y ENCAPSULAMIENTO CONTROL DE ACCESO Una clase puede controlar que partes de un programa puedan acceder a los componentes o miembros de su clase: variables miembro y métodos miembro. Una clase bien diseñada impide el acceso directo a sus variables miembro proporcionado a cambio un conjunto de METODOS DE ACCESO que sirvan como intermediarios entre las variables miembro. Algunos métodos de la clase pueden ser necesarios solo desde el interior de la clase por lo ue deben quedar restringidos solo para uso interno Especificador de acceso Acceso a los miembros Desde la misma clase Desde una subclase Desde una clase del mismo paquete Desde el exterior de la misma clase public X X X X Private X protected X X X sinespecificar X X ENCAPSULAMIENTO Es la capacidad que tiene una aplicación de ocultar detalles internos del comportamiento de una clase y dar a conocer solo los detalles ue sean necesario para el resto de las clase. Este ocultamiento permite restringir y controlar el uso de la clase. Se restringe porque existen ciertos atributos y métodos privados o protegidos y se controla porque habrán ciertos mecanismos para modificar el estado de una clase como por ejemplo los métodos de acceso Ejercicios
  • 7. 7 26. ARREGLOS (ARRAY) 26.1 Definición: son estructuras de datos, donde cada elemento conserva una posición en memoria. Los datos de un array, están diseñados de forma que unos están a continuación de otros. Para manejar la posición de sus elementos disponen de un sub-índice: - Si tiene un sub-índice serán “unidimensionales” o “vectores”. - Si tienen 2 sub-índices serán “bidimensionales” o “matrices”. - Si tienen más de 2 sub-índices serán multidimensionales. Los arrays serán del mismo tipo de los datos que guardaremos en estos. 26.2 Arreglos Unidimensionales: los array serán declarados de la misma manera que cualquier variable, con la diferencia que se le agregarán un par de corchetes “[ ]” al final de su nombre, lo que representará que son de una sola dimensión. A continuación los tipos básicos para declarar un array. Array de tipo cadena: String nombre[ ]; posición 0 posición 1 posición 2 posición 3 Array de tipo entero: Laura Esteban Paula Juan
  • 8. 8 int edad[ ]; posición 0 posición 1 posición 2 posición 3 Array de tipo real: double talla[ ]; posición 0 posición 1 posición 2 posición 3 19 21 18 23 1.55 1.72 1.60 1.68
  • 9. 9 Otra forma de declaración es colocando los corchetes luego del tipo del array. Ejemplo: String[ ] nombre; int[ ] edad; double[ ] talla; Creación del array: para la creación del array se usará la siguiente forma: nombre_array = new tipo[ tamaño]; Ejemplo: nombre = new String[4]; edad = new int[4]; talla = new double[4]; Estos array tienen 4 espacios para datos, la posición de cada dato va del 0 al 3. Ingresar elementos: para el ingreso de datos a un array, es necesario mencionar el nombre del array y la posición en la que se agregará dicho dato. Ejemplo: ingresar los datos del array nombre. nombre[0] = “Laura”; nombre [1] = “Esteban”; nombre [2] = “Paula”; nombre [3] = “Juan”;
  • 10. 10 Otra forma de cargar los datos es: nombre[ ] = {“Laura”,” Esteban”,“ Paula”,” Juan”}; Acceso a un elemento: para acceder a un elemento de cualquier array, es necesario mencionar el nombre del array y la posición, del dato que necesitamos. Ejemplo: imprimir los datos del array edad. imprimir(“Edad de la posición 0: ”+edad[0] ); imprimir(“Edad de la posición 1: ”+edad[1] ); imprimir(“Edad de la posición 2: ”+edad[2] ); imprimir(“Edad de la posición 3: ”+edad[3] ); Lo más aconsejable para manejar arrays es crear Clases propias, las cuales nos permitirán manejar en una clase la GUI y la lógica, y en la otra clase el array y los métodos necesarios para su funcionamiento. A continuación mostrares un pequeño programa que permite el ingreso de precios y los almacena en el array. Clase Principal: “ArregloUnidimensional” // invocación de librerías import java.awt.*; import java.awt.event.*;
  • 11. 11 import javax.swing.*; public class ArregloUnidimensional extends JApplet implements ActionListener{ //declaración de variables globales JLabel lblTitulo,lblPrecio; JTextField txtPrecio; JButton btnProcesar,btnBorrar; JTextArea txtArea; JScrollPane scpScroll; //llamada a la Clase Precios /*creamos una variable "p" de tipo Precios que contendrá a la clase Precios con esto podremos utilizar todos los métodos creados en esa clase*/ Precios p=new Precios( ); // GUI public void init( ) { getContentPane( ).setLayout(null); //creamos el titulo centrado lblTitulo = new JLabel("REGISTRO DE PRECIOS",SwingConstants.CENTER); lblTitulo.setBounds(150,20,200,20); getContentPane( ).add(lblTitulo); lblPrecio = new JLabel("Ingrese un precio:"); lblPrecio.setBounds(50,60,150,20); getContentPane( ).add(lblPrecio); txtPrecio = new JTextField( ); txtPrecio.setBounds(200,60,50,20); getContentPane( ).add(txtPrecio);
  • 12. 12 btnProcesar = new JButton("Procesar"); btnProcesar.setBounds(125,100,100,20); btnProcesar.addActionListener(this); getContentPane( ).add(btnProcesar); btnBorrar = new JButton("Borrar"); btnBorrar.setBounds(275,100,100,20); btnBorrar.addActionListener(this); getContentPane( ).add(btnBorrar); txtArea = new JTextArea( ); //el área no se podrá editar txtArea.setEditable(false); scpScroll = new JScrollPane(txtArea); scpScroll.setBounds(50,150,400,130); getContentPane( ).add(scpScroll); } public void actionPerformed(ActionEvent e){ if(e.getSource( ) = = btnProcesar) procesar( ); if(e.getSource( ) = = btnBorrar) borrar( ); }
  • 13. 13 //método procesar public void procesar( ){ //leemos el precio ingresado en la GUI double precio = getPrecio( ); //verificamos si el array esta lleno if(p.getIndice( ) = = p.getTamaño( )) mensaje("El array esta lleno"); //sino, si hay espacio else{ //adicionamos un precio al array p.adicionar(precio); borrar( ); listar( ); } } //método listar, mostrara los precios del array public void listar( ){ //recorremos todo el array imprimiendo los precios en cada posición for(int i=0;i<p.getIndice( );i++) imprimir("Precio de la posicion "+i+" : S/."+p.obtener(i)); } //método que lee el precio de la GUI
  • 14. 14 public double getPrecio( ){ return Double.parseDouble(txtPrecio.getText( )); } //método borrar public void borrar( ){ txtPrecio.setText(""); txtArea.setText(""); txtPrecio.requestFocus( ); } //método imprimir public void imprimir(String s){ txtArea.append(s+"n"); } //método mensaje para validar public void mensaje(String s){ JOptionPane.showMessageDialog(this,s,"ERROR",0); } }//fin del programa
  • 15. 15 Clase genérica: “Precios” /*en la clase Precios creamos nuestro array el cual nos permitirá guardar precios en la memoria*/ public class Precios{ //declaramos nuestras variables private double array[ ]; private int indice; //método constructor inicializa variables public Precios( ){ //creamos nuestro array de tipo double el cual contendrá máximo 10 precios array = new double[10]; //inicializamos nuestro índice en 0 índice = 0; } //método que retorna el índice public int getIndice( ){ return indice; }
  • 16. 16 //método que retorna el tamaño máximo del array public int getTamaño( ){ return array.length; } //método que recibe un precio y lo adiciona al array public void adicionar(double precio){ array[indice]=precio; indice++; } //método que recibe una posicion y retorna el precio de esa posicion public double obtener(int posicion){ return array[posicion]; } }//fin de la clase Precios Como vemos, en la clase genérica se manejan 4 métodos básicos: public int getIndice( ){ return indice; } Este método nos retornara el índice, esto nos permitirá saber en que posición del array nos encontramos, nos será útil para las repeticiones como la del método listar de la clase principal. public int getTamaño( ){ return array.length;
  • 17. 17 } Este método nos retornará el tamaño máximo del array, en este caso nos retornará 10, ya que ese fue el tamaño que le dimos a nuestro array en el constructor. Como vemos basta con colocar el nombre del array seguido de la función “length” que significa “longitud”. public void adicionar(double precio){ array[indice]=precio; indice++; } Este método recibirá un “precio” de tipo “double” y lo adicionara en el array en la posición en la que se encuentre en el “índice”, la primera vez agregará un precio en la posición “0”, ya que este fue el valor inicial que le dimo, luego aumentamos el índice en “1”, así la próxima vez que se ingrese un dato, este será ingresado en la siguiente posición. public double obtener(int posicion){ return array[posicion]; } Este método recibirá una “posición” y retorna el valor guardado en dicha posición. Por ejemplo visualicemos los datos ingresados en el ejemplo anterior. Si a este método le enviáramos la posición “2” este nos retornará “array[ 2 ]” lo que es igual a “45.0”.