Tema 2 DeclaracionesInicializacionyambitodelasvariables(1raparte)

Download Report

Transcript Tema 2 DeclaracionesInicializacionyambitodelasvariables(1raparte)

TEMA II
PROGRAMACIÓN EN JAVA
Curso-taller inicial de programación en JAVA
Facultad de Estadística e Informática
Contenido del Tema II curso taller
Programación en JAVA
2.- Declaraciones, inicialización y ámbito de las
variables.
 Declaración de clases.
 Declaración, inicialización y uso de primitivas, arreglos, enums.
 Declaración de Métodos.
 Instancias de Clases.
Una visión general de la Orientación
a Objetos
 Una técnica para el modelado de sistemas.
 Intenta describir un sistema como este existe
en la realidad.
 Identifica :



Objetos.
Atributos de los objetos.
Operaciones de los objetos.
Las declaraciones en el
archivo fuente
 Una opcional declaración package
 Cualquier cantidad de import
 Declaraciones de clases e interfaces.
Application Programming Interfaces
 Interfaz de Programación de Aplicaciones
(API: por sus siglas en inglés).
Actividad:
http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/
Seleccionar el paquete java.util.
Seleccionar la clase Scanner
verificar cual es el método que se ocuparía para leer cadenas desde el teclado.
Buscar la documentación para de la clase System
Seleccionar la clase String y observar los métodos que contienen
Abstracción
 Funciones – Escribir un algoritmos una ves
para ser utilizado en muchas situaciones.
 Las clases agrupan un conjunto de atributos y
comportamiento relacionados de un grupo
de objetos.
 Framework y APIs – Un grupo grande de
clases que soportan un actividad compleja.
Un framework puede ser usado directamente
o ser modificado para ampliar su
comportamiento básico.
Clases como una plantilla de
Objetos
 En fabricación una plantilla permite construir
dispositivos en base a un modelo.
 En software una clase es una descripción de un
objeto.
 Una clase describe los datos que cada objeto incluye.
 Una clase describe el comportamiento a cada objeto.
 En la tecnología JAVA las clases soportan tres
características clave de la programación
Orientada o Objetos: Encapsulamiento, Herencia
y Polimorfismo.
Control de Acceso
Declarando Clases en JAVA
 Sintaxis básica de una clase en JAVA:
 <modifiers> class <class_name>{
[<declaración_de_atributos>]
[<declaración_de_constructores>]
[<declaración_de_métodos>]
}
Ejemplo:
public class Vehiculo{
private double cargaMaxima;
public void setCargaMaxima(double valor){
cargaMaxima = valor;}
}
Declaración de Atributos
 Sintaxis básica de un atributo:
<modificadoes> <tipo> <identificador>;
Ejemplo:
public class Algo{
private int x;
private float y = 10000.0F;
private String nombre;
}
Declaración de métodos
 Sintaxis básica de un método:
<modificadoes> <tipo_de_retorno>
<identificador>([<lista_de_argunetos>]){
[<declaraciones>]};
Ejemplo:
public class Perro{
private int peso;
public int getPeso( ) {
return peso;}
public void setPeso(int nuevoPeso){
peso = nuevoPeso;
}
}
Accediendo a los Miembros del
Objeto
 Ejemplo :La notación “punto”: <objeto>.<miembro>
Es usada para acceder a los miembros del objeto estos
incluyen los atributos y los métodos.
d.setPeso(42);
d.peso = 42; // solo posible accedes a el si es público
Ocultando información
 El Problema:
MyDate
+ day:int
+ month:int
+ year:int
Si los atributos son públicos se puede
acceder a ellos directamente permitiendo
que cualquier valor sea asignado a ellos
MyDate d = new MyDate ( );
d.day = 32;
//día invalido
d.month = 2; d.day = 30;
// plausible but wrong
d.day = d.day + 1;
// en la asignación no hay verificación
Ocultando información
MyDate

- day:int
- month:int
- year:int
Solución :
+ getDay():int
+ setDay(day:int):boolean
+getMonth():int
+setMonth(month:int)
+getYear():int
+setYear(year:int)
+fechaActual()
-validaDay(day:int)
El cliente debe usar los métodos set/get
Para acceder a los datos internos:
MyDate d = new MyDate( );
d.setDay(32);
// día invalido, regresa false
d.setMonth(2);
d.setDay(30);
//posible error setDay regresa false
d.setDay(d.getDay() +1);
// este regresará falso si la verificación es
necesaria
Encapsulamiento
 Oculta los detalles de implementación de una
clase .
 Obliga al usuario a utilizar un interface
(métodos públicos) para acceder a los datos.
 Hace que sea fácil darle mantenimiento a el
código.
Declaración de los constructores
 Sintaxis básica de un constructor:
<modificador> <nombre_clase>([<lista_de_argumentos>]{
[<declaraciones>]}
Ejemplo:
public class Perro{
private int peso;
public Perro( ) {
peso = 42;}
public int getPeso( ) {
return peso;}
public void setPeso(int nuevoPeso){
peso = nuevoPeso;
}
}
El Constuctor por Default
 Siempre hay al menos un constructor.
 Si no se escribe un constructor, el constructor por default
esta presente automáticamente:
El constructor por default no tiene argumentos.
El constructor por defecto no tiene cuerpo.
 Se habilita el constructor por default al crear un objeto
con new <nombre_clase>( ) si no se escribió un
constructor.
Estructura del un archivo fuente
 Sintaxis básicade un archivo fuente :
[<declaración_del_paquete>]
[<declaración_de_los_import>]
<declaración_de_la_clase>
Ejemplo archivo VehiculoReporteCapacidad :
package shipping.reports;
import shipping.domain.*;
import java.util.List;
Import java.io.*;
Public class VehiculoReporteCapacidad{
private List vehiculos;
public void generateReport(Writer output){ ….}
}
Paquetes de Software(package)
 package ayuda a administrar sistemas grandes de software.
 package puede contener clases y subclases.
La declaración package
Sintaxis Básica de la declaración package:
package <top_pkg_name>[.<sub_pkg_name>]*;
Ejemplo:
package shipping.reports;
Especifica la declaración al inicio del archivo fuente
Solo una declaración package por archivo.
Si la declaración package no es declarada entonces
la clase pertenece al default package.
Diseño de directorios y paquetes
(package)
 Los paquetes son almacenados en el árbol
que contiene el nombre del paquete.
 Ejemplo de la aplicación shipping :
La declaración import
 Sintaxis básica de declaración import
import <pkg_name>[.<sub_pkg_name>].<class_name>;
Or
import <pkg_name>[.<sub_pkg_name>].*;
Ejemplos:
import shipping.domain.*;
import java.util.List;
import java.io.*;
Precede a todas las declaraciones de clases.
Indica al compilador donde encontrar las clases utilizadas.
Actividad a desarrollar
 Describe con tus propias palabras junto con
ejemplo de los siguientes términos:
 Clase
 Objeto
 Atributo
 Método
 Constructor
 Paquete
Genera la clase Fecha
MyDate
- day:int
- month:int
- year:int
+MyDate(day:int,month:int,year:int)
+MyDate(dia:int,mes:int,año:int)
+MyDate(dia:int)
+ getDay():int
+ setDay(day:int)
+getMonth():int
+setMonth(month:int)
+getYear():int
+setYear(year:int)
+fechaActual()
-validaDay(day:int)
Crea otra clase
llamada
PruebaMyDate.java
que utilice la clase
MyDate y que solicite
desde el teclado los
datos necesarios para
actualizar la clase y
que imprima los
valores
Tarea:
 Agregar a la clase MyDate el método que
permita calcular los años que han pasado a
partir de una fecha.
 Agregar los métodos necesarios para realizar
validación de las fechas introducidas