Upload
ferrocker1990
View
34
Download
9
Embed Size (px)
DESCRIPTION
manual de informacion para aprender java basico
Citation preview
JAVA BASICO
Modo Consola
Autor: Ing. Christian Antón, Ms.c.
Conociendo Java y su EntornoSu evolución y la «Cultura JAVA»
*.java
AporteSunMicroSystem
Conociendo Java y su EntornoSu evolución y la «Cultura JAVA»
SunMicroSystem
Nuevosprogramadores
Tomabusca!!
Conociendo Java y su EntornoSu evolución y la «Cultura JAVA»
Paquetes / packageNet, io, awt, etc.
Bonitos y contentos
Y siguieronAumentando las carpetas
Clasificación basada
en perfil de uso
Interface Development Enhanced (IDE)
Tv
Card
Tecnologías JAVA
Recordando los tipos de datos: Primitivos y Complejos
TIPOS DE DATOSEnteros
TIPOS DE DATOSReales
TIPOS DE DATOSCarácter y Boolean
CHAR EN FORMATO UNICODE Y COMILLA SIMPLES
BOOLEAN = TRUE, FALSE O 1 Y 0
Definición de Variablesint i;
int i = 0;
int i;i = 0;
int i, j, k;
Conversión de tipos
double <- float <- long <- int <- short <- byte
CASTConvertir un dato «superior» a uno «inferior»
public class Ejemplo1 {public static void main(String[] args) {
int i = 9,k;float j = 47.9F;System.out.println(“i: “+i + “ j: “ +j);k = (int)j; //empleo de un castSystem.out.println(“j: “ + j + “ k: “ +k);j = k; //no necesita castSystem.out.println(“j: “ + j + “ k: “ +k);float m = 2.3F;
//float m = 2.3; daría error al compilar.System.out.println(“m: “+m);
}}
OPERADORES BASICOS+ - * / % ++ --
public class Ejemplo2{public static void main(String[] args) {
int i = 1;prt("i : " + i);prt("++i : " + ++i); // Pre-incremento, primero
//incrementa y luego imprime por consolaprt("i++ : " + i++); // Post-incremento, primero imprime
//“2” por consola y luego incrementa i.prt("i : " + i); //i por lo tanto vale 3prt("--i : " + --i); // Pre-decremento, primero
//decrementa i y luego lo imprime por consolaprt("i-- : " + i--); // Post-decremento, primero imprime
//i por consola y luego de decrementa.prt("i : " + i); //Ahora i vale 1
}
static void prt(String s) {System.out.println(s);
}}
public class Ejemplo3 {public static void main(String[] args) {
int i = 45,j=2;prt("Cos i : " + Math.cos(i));prt("Sen i : " + Math.sin(i));prt("j^i : " + Math.pow(j,i));
}static void prt(String s) {
System.out.println(s);}}
Funciones Geo-Trigo Operadores Lógicos
String e ; String e =””; CONSTRUCTORString e = “Hola”;
Cadenas Clase String
CONCATENACIONString saludo = “hola”;String nombre = “Pepe”;String saluda_pepe = “”;saluda_pepe = saludo + nombre;
SUBCADENASString saludo = “hola”;String subsaludo = “”;Subsaludo = saludo.substring(0,2);
COMPARACIONString saludo = "Hola";String saludo2 ="hola";saludo.equals(saludo2);
public class Ejemplo5 {public static void main(String[] args) {
String saludo = "Hola";String saludo2 ="hola";int n = 5;prt(saludo.substring(0,2));prt(saludo +" " + n);prt("saludo == saludo2 "+ saludo.equals(saludo2));
}static void prt(String s) {
System.out.println(s);}
}
AMBITO DE LAS VARIABLES{ int x=0;
X=1; }--------------------------------------------Int x=0;{ X=1;}x=2;--------------------------------------------Int x=0;X=1;{ float x=0.0;
x=1.0;}
ESTRUCTURAS DE CONTROL
Selectivas --------------------------------------- if(-condición-){} else{}-------------------------------if(-condición-){} else if(-condición-){} else if(-condición-){} else {}-------------------------------Switch(-variable-){
case –valor- :break;
case –valor- :break;
case –valor- :break;
default:break;
}
Repetitivas --------------------while(-condición-){}-----------------------------do{} while(-condición-);------------------------------for(int i=0; condición; i++){}
breakNos saca de un buclecontinueNos envía al inicio del buclereturnLínea final de una función
ARRAYint[] edades = new int[10];
PROGRAMACION ORIENTADA A OBJETOSVentajas y Diferencias con la programación tradicional
PE
1 aplicación = 1 sólo archivo extenso Muy complicado dividir el trabajo Actualizar = Alterar el trabajo de los
otros Actualizar = Altos costos de
implementar Baja reutilización de código Programas muy rígidos Baja optimización de código
POO
1 aplicación = varios archivos funcionales
Fácil división del trabajo Actualizar = No altera el trabajo de los
otros Actualizar = Bajo costo de implementar Muy alta reutilización de código Programas muy dinámicos Muy alta optimización de código
DEFINICIONES DE CLASE Y OBJETO
Clase.- Es un tipo de dato complejo definido o creado por el programador
Objeto.- Es una variable del tipo de dato complejo que ha creado el programador.
Desde un Punto de vista básico
Analogía: Primitivos y Complejos
Tipo de datos primitivo
Int x
int = tipo de datoX = variable
X = variable «tonta» sólo almacena 1 valor
Tipo de datos complejo
String x
String = tipo de dato (CLASE EN POO)X = variable (OBJETO EN POO)
X = variable (OBJETO) «inteligente» capazde almacenar internamente variable(ATRIBUTOS) y métodos (PROPIEDADES)
Acceso a sus propiedadesx.Atributox.metodo()
DEFINICIONES DE CLASE Y OBJETO
Clase.- Es una «plantilla» o «molde» que se emplea para crear objetos de una misma estructura o tipo pero con características individuales
Objeto.- Es un ente o un ejemplar «inteligente» basado en una clase pero con sus propias características individuales.
Desde un Punto de vista práctico
Ejemplo de CLASE Y OBJETOSCLASE ser_humano Atributos
String sexo=«»; String nombre=«»;
En otra clase utilizo: ser_humano persona;
ser_humano = tipo de dato (CLASE EN POO)persona = variable (OBJETO EN POO)
persona = variable (OBJETO) «inteligente» capaz de almacenar internamente variables con datos sobre el nombre y sexo del individuo
ESTRUCTURA DE UNA CLASE EN JAVA
package <ruta y nombre>;
import <ruta y nombre>;
<modificador> class <nombre de clase> <extends -nombre del padre->
<implements -nombre de la interface-> {
<variables globales a la clase>
public <nombre del constructor>(<parámetros>) <throws -nombre de la clase Execption->{
}
<métodos de la clase>
public static void main(String[] x){
}
}
Siempre 1era línea
Los que sean necesarios
Igual para Interfaces
Por concepto siempre público, es opcional por
ej. librerías
Único método que compilador lee
directamente, hace a la clase principal.
ESTRUCTURA DE UNA CLASE EN JAVA
Nombre del archiv
o
Nombre de
la clase
Nombre del constructor
SON IGUALES
En un paquete la clase que tiene el
método main es la clase principal
En un paquete sólo existe una clase principal
No todas las clases llevan
constructores
package siempre debe ser la
primera línea
Las clases que llevan main son
ejecutables
El método main es por donde arranca la ejecución de un
programa
MODIFICADORESMODIFICA
DOR CLASES VARIABLES METODOS
public Promiscua, Accede todo el mundo Igual Igual
ningunoAmistoso o Friendly, Accede sólo las clases del paquete local.
Igual Igual
protected No aplicaAccede sólo las clases del paquete local más las clases derivadas de la clase propietaria de la variable, estén o no en e paquete local
Igual
private No aplicaNadie salvo los métodos internos de la clase propietaria pueden acceder a la variable
Igual
static No aplicaEl dato que almacena la variable es común entre todas las instancias de la clase
Puede ser invocado directamente sin necesidad de crear instancias de la clase propietaria
abstract Esta clase no puede instanciar, «no se puede crear objetos» No aplica No aplica
final Esta clase no puede derivar, «no puede tener hijas»
Nadie le puede cambiar el valor (constante)
Nadie lo puede sobreescribir
Sobreescritura
Sobrecarga
Constructor
Herencia
Si hacemos herencia y deseamos recodificar un método heredado, en la clase hija lo codificamos con la misma estructura (tipo de retorno, nombre de la función, cantidad y tipos de parámetros). El método de la clase hija habrá sobrescrito al método de la clase padre.
Se puede codificar varios métodos con el mismo nombre de función, diferenciándose ya sea en el tipo de retorno, cantidad de parámetros o tipo de parámetros. Se dice entonces que el método está sobrecargado.
* Se utiliza la palabra reservada extends.* La clase hija obtiene «hereda»todas los atributos y propiedadesde la clase padre.* Estos métodos y variables no son copiadosa la nueva clase, sólo son referenciados (reusabilidad)* Sólo se puede heredar de una clase a la vez.* Si una clase hija aporta 2 métodos y hereda 10, todos losobjetos de dicha clase tendrán 12 métodos.
* Por definición debe ser público.* Inicializa variables y realiza tareas necesarias
antes de la creación de objetos.* Se lo puede sobrecargar.
* Es opcional dependiendo deluso de la clase.
* No debe retornar nadani void.
class fecha{int dia, mes anio;
public fecha(){dia=1;mes=1;anio=2015;
}
public fecha(int newDia, int newMes, int newAnio){dia=newDia;mes=newMes;anio=newAnio;
}
}
class usandoFecha{public static void main(String[] x){
fecha inicio2015 = new fecha();fecha hoy = new fecha(15, 12, 2015);System.out.println(inicio2015.dia);System.out.println(hoy.dia);
}}
CREACION Y REFERENCIA DE OBJETOS
Sobrecarga del constructor
Acceso a los atributos del
objeto
class fecha{int dia, mes anio;
public fecha(){dia=1; mes=1; anio=2015;
}public fecha(int newDia, int newMes, int newAnio){
dia=newDia; mes=newMes; anio=newAnio;}void setDia(int newDia){
dia=newDia;}int getDia(){
return dia;}
} class usandoFecha{public static void main(String[] x){
fecha inicio2015 = new fecha();fecha hoy = new fecha(15, 12, 2015);hoy.setDia(25);System.out.println(inicio2015.getDia());System.out.println(hoy.getDia());
}}
METODOS GET Y SET
Permiten el encapsulamiento (concepto de POO)
Formato setAtributo, getAtributo (la primera letra en mayúscula, según standard de Java)
set.- Para colocarle nuevos valores a los atributos.
get.- Para obtener lo valores de los atributos.
class fecha{int dia, mes anio;
public fecha(){dia=1; mes=1; anio=2015;
}public fecha(int dia, int mes, int anio){
this.dia=dia; this.mes=mes; this.anio=anio;
}void setDia(int dia){
this.dia=dia;}int getDia(){
return dia;}
}
class usandoFecha{public static void main(String[] x){
fecha inicio2015 = new fecha();fecha hoy = new fecha(15, 12, 2015);hoy.setDia(25);System.out.println(inicio2015.getDia());System.out.println(hoy.getDia());
}}
COMANDO THIS
Hace referencia a las propiedades y atributos propios de la clase donde es empleado el comando.
Ayuda a diferenciar las variables propias de los métodos con las variables de la clase, si tuvieran el mismo nombre.
class humano{
String nombre; int edad; public humano(String nombre, int edad){
this.nombre=nombre; this.edad=edad; } void setEdad(int edad){
this.edad=edad; } int getEdad(){
return edad; }} class hombre extends humano{
boolean tieneBarba;
public hombre(String nombre, int edad, boolean tieneBarba){super(nombre, edad);this. tieneBarba= tieneBarba;
} void setTieneBarba(boolean tieneBarba){
this. tieneBarba= tieneBarba; } boolean getTieneBarba(){
return tieneBarba; }}
OBJETO SUPER
Sirve para hacer referencia a los atributos y propiedades de la clase padre.
Si se invoca al constructor, sólo se coloca super, si se invoca a cualquier otro método se coloca super.metodo()
Si se ha sobrescrito un método y se desea invocar al método original de la clase padre, es muy útil.
Si se va a invocar al constructor de la clase padre, super debe ser la PRIMERA LINEA en el constructor de la clase hija.
class mujer extends humano{int nCesarea; public mujer(String nombre, int edad,
int nCesarea){super(nombre, edad);this.nCesarea = nCesarea;
} void setNCesarea (int nCesarea){
this.nCesarea= nCesarea; } int getNCesarea (){
return nCesarea; }}
class humano{
String nombre; int edad; public humano(String nombre, int edad){
this.nombre=nombre; this.edad=edad; } void setEdad(int edad){
this.edad=edad; } int getEdad(){
return edad; } String getNombre(){
return nombre; }}
OBJETO SUPER
CONSIDERAR EL SIGUIENTE CODIGO:
mujer a = new mujer(«Ana»,18,0);mujer b = new mujer(«Luisa»,20,1);System.out.println(a.getNombre());System.out.println(b.getNombre());System.out.println(a.getEdad());System.out.println(b.getEdad());
class mujer extends humano{int nCesarea; public mujer(String nombre, int edad,
int nCesarea){super(nombre, edad);this.nCesarea = nCesarea;
} void setNCesarea (int nCesarea){
this.nCesarea= nCesarea; } int getNCesarea (){
return nCesarea; } int getEdad(){
if (getNCesarea ()>0){super. getEdad();
else{ return 0;} }}
El método getEdad y el Constructor de la clase padre no son accesible en a y b.
¿Explique por qué?¿Cuántos métodos y variables tienen a y b?
• La clase que implementa una interface debe codificar todos los métodos que «hereda» de una interface, los que utilice y los que no.
• En la interface sólo va la cabecera de los métodos y las variables DEBEN LLEVAR un valor inicial y deben ser public
INTERFACE
Interface formulas{public float pi = 3.1416F;double area();double perimetro();
}
class circulo implements formulas{ double radio; public circulo(double radio){
this.radio=radio; } void setRadio(double radio){ this.radio=radio; } double getRadio(){ return radio; } double area(){ return (pi*radio*radio); } double perimetro(){ return (2*pi*radio); }}
public class geometria{ public static void main(String [] x){
circulo a = new circulo(25.3);System.out.println(a.area);System.out.println(a.perimetro);
}}
CLASE VS INTERFACE---------------------------------------------------------------------------------------------Modela y da funcionalidad / Sólo modelaextends / implementsherencia única / implementación múltipleclass / interface
EJERCICIO CON PAQUETES Y MODIFICADORES
1) PROBLEMA.- Se desea llevar el control de equipos de futbol de Ecuador y se desea llevar el control de las divisiones regionales de básquet de USA
2) ANALISIS.-¿Qué tienen en común?
- Son un deporte- Son juego de grupoREQUISITOS: Clase debe ser abstracta
Paquete "nucleo"
¿Qué atributos propios de cada clase se puede aportar?- Si quiero controlar equipos de fútbol necesito sus nombres- Si quiero controlar la división regional necesito la regiónREQUISITOS: Clases distintas
Paquete "discipliinas"REQUISITOS ADICIONALES: - Se debe considerar símbolos como gritos de la hinchada al anotar el equipo- Se debe consoderar el nombre del escenario donde se desarrolla el deporte- Estos requisitos adicionales deben ir en paquete "complementos"- Debe haber una clase ejecutable ubicada en el paquete "disciplinas"
3) RESUMEN
PAQUETE: NUCLEO PAQUETE: DISCIPLINAS PAQUETE: COMPLEMENTOSPADRE: DEPORTE (ABSTRACTA) HIJAS: FUTBOL INTERFACE: SIMBOLOS
BASQUETBOL ESCENARIOEJECUTAR: PRINCIPAL
EJERCICIO CON PAQUETES Y MODIFICADORES
4) ESQUEMA GRAFICO: DIAGRAMA UML
5) CREAR LAS CARPETASFISICAMENTE
package nucleo;
public abstract class deporte{
protected int cantJugadores;protected String nomDeporte;
protected String getNomDeporte(){ return nomDeporte;
}protected int getCantJugadores(){
return cantJugadores; }
protected void setNomDeporte(String nomDeporte){ this.nomDeporte=nomDeporte;
}protected void setCantJugadores(int cantJugadores){
this.cantJugadores=cantJugadores; }
}
Clase padre
Interfacespackage complementos;
public interface simbolos{public String getGritoAnotacion();
}
package complementos;
public interface escenario{public String getNombre();
}
Clases hijaspackage disciplinas;
import nucleo.deporte;import complementos.*;
public class futbol extends deporte implements simbolos, escenario{String nomEquipo;public futbol(String nomDeporte, int cantJugadores, String nomEquipo){
super.setNomDeporte(nomDeporte);super.setCantJugadores(cantJugadores);this.nomEquipo=nomEquipo;
}
void setNomEquipo(String nomEquipo){ this.nomEquipo=nomEquipo; }String getNomEquipo(){ return nomEquipo; }
public String getGritoAnotacion(){ return "GOOOLLLL!!!!"; }
public String getNombre(){ return "Estadio de Futbol"; }
String getDeporte() { return super.getNomDeporte(); }int getCantidad() { return super.getCantJugadores(); }
}
Clases hijaspackage disciplinas;
import nucleo.deporte;import complementos.*;
public class basquetbol extends deporte implements simbolos, escenario{String division;public basquetbol(String nomDeporte, int cantJugadores, String division){
super.setNomDeporte(nomDeporte);super.setCantJugadores(cantJugadores);this.division=division;
}
void setDivision(String division){ this.division=division; }String getDivision(){ return division; }
public String getGritoAnotacion(){ return "HARROOO!!!!"; }
public String getNombre(){ return "Coliseo de Básquet"; }
String getDeporte() { return super.getNomDeporte(); }int getCantidad() { return super.getCantJugadores(); }
}
Clase ejecutable
package disciplinas;
// import disciplinas.*;// probar fuera del paquete disciplina para que vea //como se restringe el acceso a los métodos
class principal{public static void main(String[] x){
futbol B = new futbol("Futbol",11,"Barcelona");futbol E = new futbol("Futbol",11,"Emelec");
basquetbol A = new basquetbol("Básquet",6,"Atlántico");basquetbol P = new basquetbol("Básquet",6,"Pacífico");
System.out.println("En el deporte "+B.getDeporte());System.out.println("en el que juegan "+B.getCantidad()+" gladiadores");System.out.println("en el equipo de "+B.getNomEquipo());System.out.println("toda su hinchada grita "+B.getGritoAnotacion());System.out.println("en el majestuoso "+B.getNombre()+" Monumental");
System.out.println("En el deporte "+A.getDeporte());System.out.println("en el que juegan "+A.getCantidad()+" jugadores de Los Angeles Lakers");System.out.println("en la división "+A.getDivision());System.out.println("toda su fanaticada grita "+A.getGritoAnotacion());System.out.println("en el majestuoso "+A.getNombre());
}}
COMPILACION Y EJECUCION
DEBER• Se desea llevar un control del personal de las fuerzas armadas del país, realice un
esquema jerárquico de paquetes que modele a un soldado, considere que existen 3 tipos de soldados: de aire, de tierra y de mar y que cada uno tiene características particulares y también comunes entre ellos.
• Las clases padres, hijas e interfaces deben ir en carpetas diferentes, • Las clases padres no deben crear objetos y sus métodos no deben ser accedidos
por clases ajenas al paquete salvo si son hijas, y • La clase principal debe estar fuera de todo paquete.• Tiene que como mínimo haber: 1 clase padre, 3 hijas, 2 interfaces y 1 clase
ejecutable• Todas las clases debe tener mínimo 2 atributos cada una con sus respectivos
métodos get, set y constructores.• La clases hijas debe tener sobrecargado sus constructores.• Las interfaces deben tener mínimo dos métodos cada una.• La clase principal debe crear mínimo 2 objetos de cada clase hija e invocar todos
sus métodos• En el deber debe enviar los archivos *.class, *.java y adicionalmente un archivo de
word con la captura de las pantallas de la compilación y ejecución de la aplicación. La imagen debe ser entera incluido el escritorio y barra de tareas. Todo va empaquetado en formato RAR con sus 2 apellidos como nombre del archivo.