Está en la página 1de 32

Programa de Desarrollo Humano

Programación 3 – Java

Introducción a las
clases, los objetos, los
métodos y las cadenas
Haydeé Méndez Capítulo 3, Pág. de la 69 a la 93
Variables de instancia, métodos establecer y
obtener
// Clase Cuenta que contiene una variable de instancia llamada nombre
// y métodos para establecer y obtener su valor.
public class Cuenta{
private String nombre; // variable de instancia
// método para establecer el nombre en el objeto
public void establecerNombre(String nombre) {
this.nombre = nombre; // almacenar el nombre
}
// método para obtener el nombre del objeto
public String obtenerNombre() {
return nombre; // devuelve el valor de nombre a quien lo invocó
}
} // fin de la clase Cuenta

Haydeé Méndez Programación 3 2


Variables de instancia, métodos establecer y
obtener
Variable de Mantiene los datos para cada objeto, o instancia, de la clase, cada
método de la clase puede manipularla; se declaran dentro de la
instancia
declaración de la clase, fuera de los cuerpos de los métodos de la misma.
public Modificador de acceso público.
private Modificador de acceso privado, accesible sólo para métodos de la clase
en la que se declaran.
Lomo de Esquema de nomenclatura para nombres de clases, métodos y variables,
camello - los nombres de clases inician con letra mayúscula y los nombres de
CamelCase métodos y variables con minúscula.
String Variable que contiene valores de cadenas de caracteres.
Void Tipo de valor de retorno, indica que se realizará una tarea pero no
devuelve información.

Haydeé Méndez Programación 3 3


Variables de instancia, métodos establecer y
obtener
establecerNombre Método que recibe un parámetro de tipo String.
Variable local que debe especificar un tipo, solo se puede utilizar en
el método declarado, van dentro de paréntesis después del nombre
parámetro del método, cuando hay varios parámetros, se separan mediante
comas.
Cuando se da el caso entre una variable de instancia y una local, el
Variables con el
mismo nombre método se refiere a la local, se dice que la variable local oculta a la
variable de instancia.
this Hace referencia de manera explícita a la variable de instancia oculta.
Public String Método con lista de parámetros vacía, devuelve un objeto String
obtenerNombre()
Return Instrucción que regresa un valor.

Haydeé Méndez Programación 3 4


Clase PruebaCuenta, que crea y usa un objeto de la
clase Cuenta
// Crear y manipular un objeto Cuenta. // pide y lee el nombre
import java.util.Scanner;
public class PruebaCuenta{ System.out.println(“Introduzca
public static void main(String[] args){ el nombre: ”);
// crea un objeto Scanner para obtener la String elNombre =
entrada desde el símbolo del sistema entrada.nextLine(); // lee una
Scanner entrada = new Scanner(System.in); línea de texto
// crea un objeto Cuenta y lo asigna a
miCuenta miCuenta.establecerNombre(elNomb
Cuenta miCuenta = new Cuenta(); re); // coloca elNombre en
// muestra el valor inicial del nombre (null) miCuenta
System.out.printf(“El nombre inicial es: %s System.out.println(); //
%n%n”, miCuenta.obtenerNombre()); imprime una línea en blanco
// muestra el nombre almacenado
en el objeto miCuenta
System.out.printf(“El nombre en
Haydeé Méndez el 3 objeto miCuenta es:%n%s%n”,
Programación 5
Clase PruebaCuenta, que crea y usa un objeto de la
clase Cuenta
método Inicia la ejecución de una aplicación en Java, puede llamar a otros métodos en
main ésta clase y otras clases, se le conoce como clase controladora.
Scanner Crea un objeto llamado input para recibir valores de entrada.
Método del objeto Scanner para leer datos ingresados y asignarlos a las variables
nextLine locales, al oprimir enter, inserta una nueva línea.
Método del objeto Scanner para leer la siguiente palabra, al oprimir enter, lee
next caracteres hasta encontrar un espacio en blanco, tabulador o nueva línea,
devuelve un objeto String que contiene los caracteres leídos.
Crea nuevo objeto de la clase especificada, con paréntesis al final, que
new
representan una llamada a un constructor.
System.in Objeto que indica al Scanner de dónde debe leer la entrada, *ej: teclado.
null Valor inicial predeterminado de las variables de instancia de tipo String, asignado
por Java cuando no se inicializan.

Haydeé Méndez Programación 3 6


Clase PruebaCuenta, que crea y usa un objeto de la
clase Cuenta
El número de argumentos en la llamada a un método debe coincidir
Argumentos, con el número de parámetros en la lista de parámetros de la
Parámetros declaración del método, deben ser consistentes también los tipos,
no idénticos.
System.out Llama a sus métodos print, printf y println.
System.out.printf Muestra el objeto String devuelto por el método obtenerNombre.
Se pueden compilar ambas clases al mismo tiempo, escribir en cmd:
Compilar clases javac Cuenta.java PruebaCuenta.java
Si solo existieran estas dos clases en el bin de Java, se puede escribir:
javac *.java; indica que se deben compilar todos los archivos .java
Ejecutar clase Solo se ejecutará la clase PruebaCuenta.

Haydeé Méndez Programación 3 7


Diagramas de clases en UML de Cuenta
Lenguaje unificado de modelado.
Se utilizan con frecuencia para sintetizar los atributos y
las operaciones de una clase.
Ayudan a los diseñadores de sistemas a especificar un
sistema de una forma concisa, gráfica e independiente del
lenguaje de programación, antes de que los
programadores implementen el sistema en un lenguaje de
programación específico.

Haydeé Méndez Programación 3 8


Compartimientos en UML
En UML, cada clase se modela en un diagrama de clases en forma de
un rectángulo con tres compartimientos:
La variable de instancia es privada, por lo que
muestra un modificador de acceso de signo contiene nombre de la clase
menos (-) antes del nombre del atributo. Cuenta, centrado
horizontalmente y en negrita.
contiene atributo
de la clase nombre,
que corresponde a
la variable de
instancia del mismo
nombre en Java.
Las operaciones son públicas, por lo que contiene las operaciones de la clase,
muestran un modificador de acceso de signo establecerNombre y obtenerNombre, que
más (+) antes del nombre de la operación en Java corresponden a los métodos de los
mismos nombres.
Haydeé Méndez Programación 3 9
Diagramas de clases en UML de Cuenta
Tipos de UML indica el tipo de valor de retorno de una operación colocando
valores de dos puntos y el tipo de valor de retorno después de los paréntesis
retorno que le siguen al nombre de la operación.
UML lista el nombre del parámetro, seguido de dos puntos y del tipo
Parámetros
del parámetro entre paréntesis después del nombre de la operación.
Método Método especial que siempre es llamado automáticamente por la
main Máquina Virtual de Java (JVM) a la hora de ejecutar una aplicación.
Método Es especial, ya que puede llamarse sin tener que crear primero un
static objeto de la clase en la cual se declara ese método.
A través de la palabra clave static, llama al método main para iniciar
JVM
la ejecución de la aplicación.

Haydeé Méndez Programación 3 10


Diagramas de clases en UML de Cuenta
Están en el paquete java.lang, que se importa de manera implícita
Clases System y en todo programa de Java, por lo que todos los programas pueden
String usar las clases de ese paquete sin tener que importarlas de
manera explícita.
Se dice cuando se considera que las clases se encuentran en el
Paquete mismo paquete, las cuales se importan implícitamente en los
predeterminado archivos de código fuente de las otras clases del mismo paquete.
Java.util.Scanner Incluye el nombre completo del paquete y de la clase.
Nombre de clase Quiere decir que no es necesaria la declaración import, para hacer
completamente referencia a la clase Scanner, la expresión anterior lo cubre, que
calificado también puede escribirse de la siguiente forma: java.util.Scanner
entrada = new java.útil.Scanner(System.in);

Haydeé Méndez Programación 3 11


Ingeniería de software
Es cuando se valida el intento de modificaciones a los datos
private, y se controla como se presentan los datos al que hace
llamada el método.
Si la variable de instancia fuera public, cualquier cliente de la
clase podría ver los datos y hacer lo que quisiera con ellos,
incluyendo establecer un valor no válido.
Un control estricto del acceso y la presentación de los datos
private puede reducir los errores de manera considerable, e
incrementar al mismo tiempo la robustez y seguridad de sus
programas.
Haydeé Méndez Programación 3 12
Ingeniería de software
Vista conceptual de un objeto Cuenta con su variable de instancia private llamada
nombre encapsulada y con la capa protectora de métodos public.
El proceso de declarar variables de
instancia con el modificador de acceso
private se conoce como ocultamiento de
datos, u ocultamiento de información.
Objeto Cuenta: el nombre de la variable de
instancia private está oculto dentro del objeto
(se representa mediante el círculo interno que
contiene nombre) y protegido por una capa
exterior de métodos public (representados por
el círculo exterior que contiene obtenerNombre y
establecerNombre). Cualquier código cliente que
necesite interactuar con el objeto Cuenta puede
hacerlo solamente a través de llamadas a los
Haydeé Méndez public de la capa exterior
métodos protectora.
Programación 3 13
Comparación entre tipos primitivos y * referencia

Tipos primitivos
• Variables que pueden almacenar un solo valor de su tipo declarado: int, boolean,
byte, char, short, long, float, double.
• Las variables locales no se inicializan predeterminadamente, las de instancia se
inicializan predeterminadamente.

Tipos por referencia


• Llamadas referencia, almacenan direcciones de los objetos en la memoria de la
computadora, se dice que hace referencia a un objeto en el programa: Scanner,
Cuenta, precedidos de new.
• Si no se inicializan de manera explícita, lo hacen de manera predeterminada con el
valor null, referencia a nada.

Haydeé Méndez Programación 3


Constructores

Permite proporcionar un nombre a la hora de crear un


objeto.
Cada clase que usted declare puede proporcionar de
manera opcional un constructor con parámetros que
pueden utilizarse para inicializar un objeto de una clase al
momento de crear ese objeto.
Java requiere una llamada al constructor para cada objeto
que se crea, por lo que éste es el punto ideal para
inicializar las variables de instancia de un objeto.
Haydeé Méndez Programación 3 15
Ejemplo usando constructor
// Clase Cuenta con un // método para establecer
constructor que el nombre
inicializa el nombre. public void
public class Cuenta{ establecerNombre(String
private String nombre){
nombre; // variable de this.nombre = nombre;
instancia }
// el constructor // métodos para
inicializa nombre con el recuperar el nombre
parámetro nombre public String
public obtenerNombre(){
Cuenta(String nombre){ // return nombre;
el nombre del constructor }
Haydeé Méndez Programación 3 16
Ejemplo usando constructor
// Uso del constructor de Cuenta para inicializar la
variable de instancia
// nombre al momento de crear el objeto Cuenta.
public class PruebaCuenta{
public static void main(String[] args){
// crear dos objetos Cuenta
Cuenta cuenta1 = new Cuenta(“Jane Green”);
Cuenta cuenta2 = new Cuenta(“John Blue”);
// muestra el valor inicial de nombre para cada Cuenta
System.out.printf(“El nombre de cuenta1 es: %s%n”,
cuenta1.obtenerNombre());
System.out.printf(“El nombre de cuenta2 es: %s%n”,
cuenta2.obtenerNombre()); Programación 3
Haydeé Méndez 17
Uso de constructores
Debe tener el mismo nombre que la clase.
La lista de parámetros especifica que éste requiere uno o
más datos para realizar su tarea.
En este caso, el constructor tiene un parámetro String
(variable local) llamado nombre, para recibir nombres.
La palabra clave new solicita memoria del sistema para
almacenar objetos, luego los llama (indicados dentro de
paréntesis) de manera implícita para inicializarlos.
No puede devolver valores.
Haydeé Méndez Programación 3 18
Uso de constructores

Las clases pueden tener varios constructores.


En cualquier clase que no declare de manera explícita a
un constructor, el compilador proporciona un constructor
predeterminado (que nunca tiene parámetros).
Cuando una clase sólo tiene el constructor
predeterminado, sus variables de instancia se inicializan
con sus valores predeterminados.
No hay constructor predeterminado en una clase que
declara a un constructor.
Haydeé Méndez Programación 3 19
Diagrama de clase en UML
Se debe agregar el constructor al diagrama de clases.
UML modela a los constructores en el tercer
compartimiento.
Se coloca la palabra
constructor entre
comillas antes de su
nombre.
Se listan primero
los constructores.
Haydeé Méndez Programación 3 20
Variables o literales de tipo punto flotante

Punto flotante de precisión simple, float


• Pueden representar hasta 7 dígitos significativos.

Punto flotante de precisión doble, double


• Requieren el doble de memoria que las float,
pueden contener hasta 15 dígitos significativos, el
doble que los float.
Haydeé Méndez Programación 3 21
Clase cuenta con variable de instancia double

public class Cuenta{ // método que deposita (suma) sólo una


private String nombre; // cantidad válida al saldo
variable de instancia public void depositar(double montoDeposito)
private double saldo; // {
variable de instancia if (montoDeposito > 0.0) // si el
// Constructor de Cuenta que montoDeposito es válido
recibe dos parámetros saldo = saldo + montoDeposito; // lo suma
public Cuenta(String nombre, al saldo
double saldo){ } // método que devuelve el saldo de la
this.nombre = nombre; // cuenta
asigna nombre a la variable de public double obtenerSaldo(){
instancia nombre return saldo;
// valida que el saldo sea }
mayor que 0.0; de lo contrario, // método que establece el nombre
// la variable de instancia public void establecerNombre(String nombre)
saldo mantiene su valor inicial {
predeterminado de 0.0 this.nombre = nombre;
if (saldo > 0.0) // si el }
saldoMéndez
Haydeé es válido // método
Programación 3 que devuelve el nombre 22
Clase PruebaCuenta, uso de Clase Cuenta
// E/S de números de punto flotante con
// muestra los saldos
objetos Cuenta.
System.out.printf(“Saldo de %s: $%.2f%n”,
import java.util.Scanner;
cuenta1.obtenerNombre(),
public class PruebaCuenta{
cuenta1.obtenerSaldo());
public static void main(String[] args){
System.out.printf(“Saldo de %s: $%.2f%n%n”,
Cuenta cuenta1 = new Cuenta(“Jane Green”,
cuenta2.obtenerNombre(),
50.00);
cuenta2.obtenerSaldo());
Cuenta cuenta2 = new Cuenta(“John Blue”, -
System.out.print(“Escriba el monto a
7.53);
depositar para cuenta2: “); // indicador
// muestra el saldo inicial de cada objeto
(promt)
System.out.printf(“Saldo de %s: $%.2f%n”,
montoDeposito = entrada.nextDouble(); //
cuenta1.obtenerNombre(),
obtiene entrada del usuario
cuenta1.obtenerSaldo());
System.out.printf(“%nsumando %.2f al saldo
System.out.printf(“Saldo de %s: $%.2f%n%n”,
de cuenta2%n%n”,
cuenta2.obtenerNombre(),
montoDeposito);
cuenta2.obtenerSaldo());
cuenta2.depositar(montoDeposito); // suma
// crea un objeto Scanner para obtener la
al saldo de cuenta2
entrada de la ventana de comandos
// muestra los saldos
Scanner entrada = new Scanner(System.in);
System.out.printf(“Saldo de %s: $%.2f%n”,
System.out.print(“Escriba el monto a
cuenta1.obtenerNombre(),
depositar para cuenta1: “); // indicador
cuenta1.obtenerSaldo());
(promt)
System.out.printf(“Saldo de %s: $%.2f%n%n”,
double
Haydeé MéndezmontoDeposito = Programación 3 23
Clase cuenta con variable de instancia
double
Saldo Variable de instancia de la clase, de tipo double, con saldo inicial
predeterminado de 0.0
Métodos void No devuelven ningún valor, aunque reciban parámetros, no hay retorno.
if Valida que la variable saldo sea mayor que cero, si lo es, actualiza el saldo.
ObtenerSaldo Método que devolverá valor double, por lo que se declara double, con
una lista de parámetros vacía, que son los paréntesis.
Método que devolverá valor String, por lo que se declara String, con una
ObtenerNombre lista de parámetros vacía, que son los paréntesis.
cuenta1 Dos objetos creados, de tipo Cuenta, el primero inicializado con 50.00 y el
cuenta2 segundo inicializado con -7.53, que son los saldos iniciales.
Obtener nombre Se obtiene mediante llamada al método obtenerNombre, y el otro
y saldo mediante llamada al método obtener Saldo.

Haydeé Méndez Programación 3 24


Clase PruebaCuenta, uso de Clase Cuenta
Se inicializó con valor negativo, a la hora de imprimir, imprime 0.0,
cuenta2 debido a que el constructor rechazó el saldo negativo.
Saldo cuenta2 Conserva su valor inicial predeterminado de 0.00
%f Especificador de formato que se utiliza para imprimir valores tipo float
o double.
En el medio se escribe el número de decimales deseado, a la derecha
%.2f del punto decimal; también se conoce como precisión del número, y
aproxima aplicando las reglas matemáticas.
montoDeposito Variable local no se inicializa de manera predeterminada, debe
inicializarse de manera explícita.
Argumentos Los métodos que reciben argumentos, siempre deben indicar el tipo de
variable que reciben.

Haydeé Méndez Programación 3 25


Diagrama de clases de UML-Clase Cuenta
Se agrega la variable de instancia saldo de tipo double en el segundo
compartimiento.

En el tercer
compartimiento se
agregan los métodos
depositar con un
parámetro
montoDeposito de tipo
double; obtenerSaldo
con un tipo de valor de
retorno double.
Haydeé Méndez Programación 3 26
Uso de JOptionPane
// Uso de JOptionPane para mostrar varias líneas
en un cuadro de diálogo.
import javax.swing.JOptionPane;

public class Dialogo1{


public static void main(String[] args){

// muestra un diálogo con un mensaje


JOptionPane.showMessageDialog(null,
“Bienvenido a Java”);
}
} // fin de la clase Dialogo1

Haydeé Méndez Programación 3 27


Uso de JOptionPane
GUI Uso de interfaces gráficas de usuario y gráficos compatibles.
cuadro de También llamados diálogos, son ventanas en las que los programas muestran mensajes
diálogo importantes a los usuarios.
clase Cuenta con cuadros de diálogo prefabricados, los cuales permiten a los programas mostrar
JOptionPane ventanas que contengan mensajes; a dichas ventanas se les conoce como diálogos de mensaje.
javax.swing Paquete contiene muchas clases que le ayudan a crear interfaces gráficas de usuario (GUI).
componentes Facilitan la entrada de datos al usuario del programa, además de la presentación de los datos de
de la GUI salida.
método Requiere dos argumentos, el primero hace referencia a la ventana conocida como ventana padre
showMessage y hace que el diálogo aparezca centrado sobre la ventana de la aplicación, si el primer argumento
Dialog de es null, el cuadro de diálogo aparece en el centro de la pantalla del computador; el segundo
JOptionPane argumento es el objeto String a mostrar en el cuadro de diálogo.
Es el método showMessageDialog de la clase JOptionPane, dichos métodos definen las tareas que
método static se utilizan con frecuencia; la llamada a un método static se realiza mediante el uso del nombre de
su clase, seguido de un punto y del nombre del método.

Haydeé Méndez Programación 3 28


Uso de JOptionPane
// Entrada básica con un cuadro de diálogo.
import javax.swing.JOptionPane;

public class DialogoNombre{

public static void main(String[] args){


// pide al usuario que escriba su nombre
String nombre = JOptionPane.showInputDialog(“Cual es su nombre?”);
// crea el mensaje
String mensaje = String.format(“Bienvenido, %s, a la programacion en Java!”, nombre);
// muestra el mensaje para dar la bienvenida al usuario por su nombre
JOptionPane.showMessageDialog(null, mensaje);
} // fin de main
} // fin de la clase DialogoNombre

Haydeé Méndez Programación 3 29


Uso de JOptionPane
diálogo de Permite al usuario introducir datos en un programa.
entrada
Muestra un diálogo de entrada que contiene un indicador (promt) y
método un campo (conocido como campo de texto), en el cual el usuario
showInputDialog puede escribir texto. El argumento es el indicador que muestra lo que
de JOptionPane el usuario debe escribir. Devuelve un objeto String que contiene los
caracteres escritos por el usuario.
método static Es similar al método System.out.printf, excepto que format devuelve
format de la el objeto String con formato, en vez de mostrarlo en una ventana de
clase String comandos.

Haydeé Méndez Programación 3 30


Tarea 3 – Capítulo 3
Guarde el archivo con sus apellidos, letra inicial
mayúscula, sin tildes, por ejemplo: LopezPerezT2.java
Debe desplegar en ejecución su nombre: Primer Nombre,
Primer Apellido, por ejemplo: Elena Lopez.
Empacar el archivo generado .java y subirlo a GES.

Haydeé Méndez Programación 3 31


Tarea 3 – Capítulo 3
Modifique el programa de suma para usar la entrada y salida en
un cuadro de diálogo con los métodos de la clase JOptionPane.
Como el método showInputDialog devuelve un objeto String,
debe convertir el objeto String que introduce el usuario a un int
para usarlo en los cálculos.
El método parseInt es un método static de la clase Integer (del
paquete java.lang) que recibe un argumento String que
representa a un entero y devuelve el valor como int. Si el objeto
String no contiene un entero válido, el programa terminará con
un error.

Haydeé Méndez Programación 3 32

También podría gustarte