Sei sulla pagina 1di 37

JAVA BASICO

Modo Consola
Autor: Ing. Christian Antn, Ms.c.

Conociendo Java y su Entorno


Su evolucin y la Cultura JAVA

*.java

Sun
MicroSystem

Aporte

Conociendo Java y su Entorno


Su evolucin y la Cultura JAVA

Sun
MicroSystem
Nuevos
programadores

Toma
busca!!

Conociendo Java y su Entorno


Su evolucin y la Cultura JAVA

aquetes / package
Net, io, awt, etc.

Y siguieron
Aumentando las carpetas

Bonitos y
contento

Clasificacin basada

en perfil de uso

Tecnologas JAVA

Tv
Card
Interface Development
Enhanced (IDE)

Recordando los tipos de datos:


Primitivos y Complejos

TIPOS DE DATOS
Enteros

TIPOS DE DATOS
Reales

TIPOS DE DATOS
Carcter y Boolean
CHAR EN FORMATO UNICODE Y COMILLA SIMPLES
BOOLEAN = TRUE, FALSE O 1 Y 0

Definicin
de Variables

Conversi
n de tipos

int i;
int i = 0;
int i;
i = 0;
int i, j, k;

double <- float <- long <- int <- short <- byte

CAST
Convertir 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 cast
System.out.println(j: + j + k: +k);
j = k;
//no necesita cast
System.out.println(j: + j + k: +k);
float m = 2.3F;
//float m = 2.3; dara 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 consola
prt("i++ : " + i++);
// Post-incremento, primero
imprime
//2 por consola y luego incrementa i.
prt("i : " + i);
//i por lo tanto vale 3
prt("--i : " + --i);
// Pre-decremento, primero
//decrementa i y luego lo imprime por consola
prt("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);
}

Funciones Geo-Trigo
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);
}
}

Cadenas Clase String


String e ;
String e =;
CONSTRUCTOR
String e = Hola;

Operadores Lgicos

COMPARACION
String saludo =
"Hola";
SUBCADENAS
String saludo = hola; String saludo2
CONCATENACION
String saludo = hola; String subsaludo = ; ="hola";
saludo.equals(saludo
Subsaludo =
String nombre = Pepe;
saludo.substring(0,2); 2);
String saluda_pepe = ;
saluda_pepe = saludo +
nombre;
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;
ARRAY
{ float x=0.0; int[] edades =
x=1.0;
break
int[10];
}
Nos
saca de un bucle
continue
Nos enva al inicio del bucle
return
Lnea final de una funcin

ESTRUCTURAS DE CONTROL
Selectivas
--------------------------------------if(-condicin-){
Repetitivas
} else{
-------------------}
while(-condicin-){
------------------------------}
if(-condicin-){
----------------------------} else if(-condicin-){
do{
} else if(-condicin-){
} while(-condicin-);
} else {
-----------------------------}
for(int i=0; condicin;
------------------------------Switch(-variable-){ i++){
case valor- : }
new
break;
case valor- :
break;
case valor- :
break;
default:
break;
}

PROGRAMACION ORIENTADA A OBJETOS

PE

Ventajas y Diferencias con la programacin


tradicional

1 aplicacin = 1 slo archivo


extenso
Muy complicado dividir el
trabajo
Actualizar = Alterar el trabajo
de los otros
Actualizar = Altos costos de
implementar
Baja reutilizacin de cdigo
Programas muy rgidos
Baja optimizacin de cdigo

POO
1 aplicacin = varios archivos
funcionales
Fcil divisin del trabajo
Actualizar = No altera el trabajo
de los otros
Actualizar = Bajo costo de
implementar
Muy alta reutilizacin de cdigo
Programas muy dinmicos
Muy alta optimizacin de cdigo

DEFINICIONES DE CLASE Y OBJETO

Desde un Punto de vista bsico


Clase.- Es un tipo de
Objeto.- Es una variable
dato complejo definido o
del tipo de dato complejo
creado
por
el
que
ha
creado
el
programador
programador.
Analoga: Primitivos y Complejos
Tipo de datos
primitivo
Int x
int = tipo de dato
X = variable
X = variable
tonta slo
almacena 1 valor

Tipo de datos complejo


String x

Acceso a sus
propiedades
String = tipo de dato (CLASE EN POO)
x.Atributo
X = variable (OBJETO EN POO)
x.metodo()
X = variable (OBJETO) inteligente capaz
de almacenar internamente variable
(ATRIBUTOS) y mtodos (PROPIEDADES)

DEFINICIONES DE CLASE Y OBJETO

Desde un Punto de vista prctico


Clase.Es
una
Objeto.- Es un ente o un
plantilla o molde
ejemplar
inteligente
que se emplea para
basado en una clase pero
crear objetos de una
con
sus
propias
misma estructura o tipo
caractersticas
pero con caractersticas
individuales.
Ejemplo de CLASE Y OBJETOS
individuales
CLASE 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


Siempre 1era lnea
package <ruta y nombre>;
import <ruta y nombre>;

Los que sean necesarios

<modificador> class <nombre de clase>


<extends -nombre del padre->
<implements -nombre de la interface->
{
<variables globales a la clase>

Igual para Interfaces

public <nombre del constructor>(<parmetros>)


<throws -nombre de la clase Execption->{
}
<mtodos de la clase>
public static void main(String[] x){
}
}

Por concepto
siempre pblico, es
opcional por ej.
libreras

nico mtodo que


compilador lee
directamente, hace
a la clase principal.

ESTRUCTURA DE UNA CLASE EN JAVA


En un paquete
la clase que
tiene el mtodo
main es la clase
principal

No todas las
clases llevan
constructores

package
siempre debe
ser la primera
lnea

Nom
bre
del
archi
vo

Nom
bre
de la
clas
e

El mtodo main
es por donde
arranca la
ejecucin de un
programa

Nom
bre
del
cons
truct
or

SON IGUALES

Ejercicio: CONSTRUYA EL HOLA MUNDO

En un
paquete slo
existe una
clase
principal

Las clases
que llevan
main son
ejecutables

MODIFICADORES
MODIFI
CADOR

CLASES

VARIABLES

METODOS

public

Promiscua, Accede todo


el mundo

Igual

Igual

ninguno

Amistoso o Friendly,
Accede slo las clases
del paquete local.

Igual

Igual

No aplica

Accede slo las clases del


paquete local ms las
clases derivadas de la clase
propietaria de la variable,
estn o no en e paquete
local

Igual

No aplica

Nadie salvo los mtodos


internos de la clase
propietaria pueden acceder
a la variable

Igual

static

No aplica

El dato que almacena la


variable es comn 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

protecte
d

private

Esta clase no puede

Sobreescritura

Si hacemos herencia y deseamos recodificar un


mtodo heredado, en la clase hija lo codificamos con
la misma estructura (tipo de retorno, nombre de la
funcin, cantidad y tipos de parmetros). El mtodo de
la clase hija habr sobrescrito al mtodo de la clase
padre.
* Se utiliza la palabra
reservada extends.
* La clase hija obtiene hereda
* Por definicin debe ser pblico.
todas los atributos y propiedades
* Inicializa variables y realiza tareas necesarias
de la clase padre.
antes de la creacin de objetos.
* Estos mtodos y variables no son copiados
* Se lo puede sobrecargar.
a la nueva clase, slo son referenciados
* Es opcional dependiendo del
(reusabilidad)
uso de la clase.
* Slo se puede heredar de una clase a la vez.
* No debe
* Si una clase hija aporta 2 mtodos y hereda
10, retornar nada
ni void.
todos los
objetos de dicha clase tendrn 12 mtodos.

Herencia

Constructor

Sobrecarga

Se puede codificar varios mtodos con el mismo nombre de


funcin, diferencindose ya sea en el tipo de retorno, cantidad de
parmetros o tipo de parmetros. Se dice entonces que el

class fecha{
int dia, mes anio;
public fecha(){
dia=1;
mes=1;
anio=2015;
}

CREACION Y REFERENCIA DE OBJETOS


CREACION Y REFERENCIA DE OBJETOS

Sobrecarga del
constructor

public fecha(int newDia, int newMes, int


newAnio){
dia=newDia;
mes=newMes;
anio=newAnio;
class usandoFecha{
}
class usandoFecha{
public static void main(String[] x){
publicfecha
staticinicio2015
void main(String[]
x){
= new fecha();
}
fecha
inicio2015
= fecha(15,
new fecha();
fecha
hoy = new
12, 2015);
fecha
hoy
=
new
fecha(15,
12,
2015);
System.out.println(inicio2015.dia);
System.out.println(inicio2015.dia);
System.out.println(hoy.dia);
System.out.println(hoy.dia);
Acceso a los
}
}
}
atributos del
}

objeto

class fecha{
int dia, mes anio;
METODOS GET Y SET
public fecha(){
METODOS GET Y SET
dia=1; mes=1; anio=2015;
}
Permiten el
public fecha(int newDia, int newMes, int
encapsulamiento
newAnio){
(concepto de POO)
dia=newDia; mes=newMes;
anio=newAnio;
Formato setAtributo,
}
getAtributo (la
void setDia(int newDia){
primera letra en
dia=newDia;
mayscula, segn
}
standard de Java)
int getDia(){
class usandoFecha{
return dia;
class usandoFecha{
public static void main(String[] x){
}
publicfecha
staticinicio2015
void main(String[]
x){
= new fecha();
}
fecha
inicio2015
= fecha(15,
new fecha();
fecha
hoy = new
12, 2015);
fecha
hoy
=
new
fecha(15,
12,
2015);
hoy.setDia(25);
set.- Para colocarle
hoy.setDia(25);
nuevos valores a los
System.out.println(inicio2015.getDia());
atributos.
System.out.println(inicio2015.getDia());
System.out.println(hoy.getDia());
System.out.println(hoy.getDia());
}
get.- Para obtener lo
}
}
valores de los
}
atributos.

class fecha{
int dia, mes anio;
COMANDO THIS
public fecha(){
COMANDO THIS
dia=1; mes=1; anio=2015;
}
public fecha(int dia, int mes, int anio){
this.dia=dia;
Hace referencia a las
this.mes=mes;
propiedades y
this.anio=anio;
atributos propios de
}
la clase donde es
void setDia(int dia){
empleado el
this.dia=dia;
comando.
}
int getDia(){
return dia;
class usandoFecha{
}
class usandoFecha{
public static void main(String[] x){
}
publicfecha
staticinicio2015
void main(String[]
x){
= new fecha();
fecha
inicio2015
= fecha(15,
new fecha();
fecha
hoy = new
12, 2015);
fecha
hoy
=
new
fecha(15,
12,
2015);
hoy.setDia(25);
Ayuda a diferenciar
hoy.setDia(25);
las variables propias
System.out.println(inicio2015.getDia());
de los mtodos con
System.out.println(inicio2015.getDia());
System.out.println(hoy.getDia());
las variables de la
System.out.println(hoy.getDia());
}
clase, si tuvieran el
} }
mismo nombre.
}

class humano{

class mujer extends humano{


class
mujer extends humano{
int nCesarea;
String nombre; int edad;
int nCesarea;
public mujer(String nombre, int
public humano(String nombre, int edad){
public
mujer(String nombre, int
edad,
this.nombre=nombre; this.edad=edad;
edad,
int nCesarea){
}
int nCesarea){
super(nombre,
edad);
void setEdad(int edad){
super(nombre,
edad);
this.nCesarea = nCesarea;
this.edad=edad;
this.nCesarea
= nCesarea;
}
}
} void setNCesarea (int nCesarea)
int getEdad(){
{ void setNCesarea (int nCesarea)
return edad;
{
this.nCesarea= nCesarea;
}
this.nCesarea=
nCesarea;
class hombre extends humano{
}
}
class hombre extends humano{
} int getNCesarea (){
intreturn
getNCesarea
(){
boolean tieneBarba;
nCesarea;
boolean tieneBarba;
return
nCesarea;
}
} edad,
public hombre(String nombre,
} int
public tieneBarba){
hombre(String nombre,
} int edad,
boolean
boolean
tieneBarba){edad);
Sirve para hacer referencia a los
super(nombre,
super(nombre,
edad);
atributos y propiedades de la clase
this. tieneBarba=
tieneBarba;
padre.
this.
} tieneBarba= tieneBarba;
Si se invoca al constructor, slo se
} void setTieneBarba(boolean tieneBarba){
coloca super, si se invoca a cualquier
void
setTieneBarba(boolean
tieneBarba){
this.
tieneBarba= tieneBarba;
otro mtodo se coloca super.metodo()
this.
tieneBarba=
tieneBarba;
}
Si se ha sobrescrito un mtodo y se
} boolean getTieneBarba(){
desea invocar al mtodo original de la
boolean
clase padre, es muy til.
return getTieneBarba(){
tieneBarba;
Si se va a invocar al constructor de la
return
tieneBarba;
}
clase padre, super debe ser la PRIMERA
} }

OBJETO SUPER
OBJETO SUPER

class humano{

OBJETO SUPER
OBJETO SUPER

class mujer extends humano{


String nombre; int edad;
class
mujer extends humano{
int nCesarea;
public humano(String nombre, intint
edad){
nCesarea;
public mujer(String nombre, int
this.nombre=nombre; this.edad=edad;
public
mujer(String nombre, int
edad,
}
edad,
int nCesarea){
void setEdad(int edad){
int
nCesarea){
super(nombre,
edad);
this.edad=edad;
super(nombre,
edad);
this.nCesarea = nCesarea;
}
this.nCesarea
= nCesarea;
}
int getEdad(){
} void setNCesarea (int nCesarea)
return edad;
{ void setNCesarea (int nCesarea)
}
{
this.nCesarea= nCesarea;
String getNombre(){
this.nCesarea=
nCesarea;
}
return nombre;
} int getNCesarea (){
}
intreturn
getNCesarea
(){
nCesarea;
}
return
nCesarea;
}
} int getEdad(){
intifgetEdad(){
(getNCesarea ()>0){
if
(getNCesarea
()>0){
CONSIDERAR EL SIGUIENTE
super. getEdad();
super.
getEdad();
CODIGO:
else{
return
0;}
else{
return
0;}
}
mujer a = new
} }
mujer(Ana,18,0);
}
El mtodo getEdad y el Constructor de la
mujer b = new
mujer(Luisa,20,1);
System.out.println(a.getNombre(
));
System.out.println(b.getNombre(

clase padre no son accesible en a y b.


Explique por qu?
Cuntos mtodos y variables tienen a y
b?

CLASE
VS INTERFACE
CLASE
VS
INTERFACE
--------------------------------------------------------------------------------------------------------------------------------------------INTERFACE
---------------------INTERFACE
---------------------Modela y da funcionalidad /
Slo modela
Modela
y
da
funcionalidad
/
Slo
extends
/
implementsmodela
extends
/ / implements
herencia nica
implementacin mltiple
herencia
nica
/
implementacin
mltiple
class
/
interface
La clase que implementa
class
/
interface
una interface
Ladebe
clasecodificar
que implementa
una
interface
todos los mtodos que
Interface formulas{
debe
codificar
todos
los mtodos
que
hereda de una interface,
los que
public float pi = 3.1416F;
hereda
de
una
interface,
los
que
utilice y los que no.
double area();
utilice y los que no.

En la interface slo va la cabecera de


Enlos
la mtodos
interfaceyslo
va la cabecera
de
las variables
DEBEN
los
mtodos
las variables
DEBENser
LLEVAR
un y
valor
inicial y deben
LLEVAR
public un valor inicial y deben ser
public
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);
}
}

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); }
}

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 bsquet de USA
2) ANALISIS.Qu tienen en comn?
- Son un deporte
- Son juego de grupo
REQUISITOS: Clase debe ser abstracta
Paquete "nucleo"
Qu atributos propios de cada clase se puede aportar?
- Si quiero controlar equipos de ftbol necesito sus nombres
- Si quiero controlar la divisin regional necesito la regin
REQUISITOS:
Clases distintas
Paquete "discipliinas"
REQUISITOS ADICIONALES:
- Se debe considerar smbolos 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
COMPLEMENTOS
PADRE: DEPORTE (ABSTRACTA) HIJAS:
FUTBOL
BASQUETBOL
ESCENARIO
EJECUTAR:
PRINCIPAL

PAQUETE:
INTERFACE:

SIMBOLOS

EJERCICIO CON PAQUETES Y MODIFICADORES


4) ESQUEMA GRAFICO: DIAGRAMA UML

5) CREAR LAS
CARPETAS
FISICAMENTE

package nucleo;
public abstract class deporte{

Cla

protected int cantJugadores;


protected String nomDeporte;

se p
a dr
e

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;
}
}

Inte

package complementos;
public interface simbolos{
public String getGritoAnotacion();
}

rfac
e

package complementos;
public interface escenario{
public String getNombre();
}

package disciplinas;
import nucleo.deporte;
import complementos.*;

Cla

se s

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(); }

hija
s

package disciplinas;
import nucleo.deporte;
import complementos.*;

Cla

se s

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 Bsquet"; }
String getDeporte() { return super.getNomDeporte(); }
int getCantidad() { return super.getCantJugadores(); }

hija
s

package disciplinas;

Cla

se e
jecu
tab
l

// import disciplinas.*;
// probar fuera del paquete disciplina para que vea
//como se restringe el acceso a los mtodos

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("Bsquet",6,"Atlntico");


basquetbol P = new basquetbol("Bsquet",6,"Pacfico");
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 divisin "+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 pas,
realice un esquema jerrquico 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 caractersticas particulares y tambin comunes entre
ellos.
Las clases padres, hijas e interfaces deben ir en carpetas diferentes,
Las clases padres no deben crear objetos y sus mtodos 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 mnimo haber: 1 clase padre, 3 hijas, 2 interfaces y 1
clase ejecutable
Todas las clases debe tener mnimo 2 atributos cada una con sus
respectivos mtodos get, set y constructores.
La clases hijas debe tener sobrecargado sus constructores.
Las interfaces deben tener mnimo dos mtodos cada una.
La clase principal debe crear mnimo 2 objetos de cada clase hija e
invocar todos sus mtodos
En el deber debe enviar los archivos *.class, *.java y adicionalmente un
archivo de word con la captura de las pantallas de la compilacin y
ejecucin de la aplicacin. La imagen debe ser entera incluido el
escritorio y barra de tareas. Todo va empaquetado en formato RAR con

Potrebbero piacerti anche