java certificacion

96
El lenguaje de programación JAVA Dr. Hector G. Perez Gonzalez M.C. Froylan Eloy Hernandez Castro

Upload: alex-herrera

Post on 10-May-2015

420 views

Category:

Technology


3 download

DESCRIPTION

Java Certification UASLP

TRANSCRIPT

Page 1: Java certificacion

El lenguaje de programación JAVA

Dr. Hector G. Perez GonzalezM.C. Froylan Eloy Hernandez

Castro

Page 2: Java certificacion

Java

The green project

*7

Oak

Page 3: Java certificacion

Java

Page 4: Java certificacion

Java

Page 5: Java certificacion

J2Eava

Page 6: Java certificacion

PresentacionCliente

PresentacionServidor

Negocioservidor

Base de Datos

Empresa

Java

Page 7: Java certificacion

Una Aplicación Simple de JAVA

The TestGreeting.java Aplication//// Aplicación “Hola Mundo”//public class TestGreeting {

public static void main(String[ ] args) {Greeting hello = new Greeting( );hello.greet( );

}}

The Greeting.java Class

public class Greeting {public void greet ( ) {

system.out.println(“hi”);}

}

Page 8: Java certificacion

El lenguaje de programación JAVA

Parte 0 Diseño Orientado a Objetos

Page 9: Java certificacion

Diagrama de Clases

El Diagrama de Clases es el diagrama principal para el análisis y diseño

Un diagrama de clases presenta las clases del sistema con sus relaciones estructurales y de herencia

La definición de clase incluye definiciones para atributos y operaciones

El modelo de casos de uso aporta información para establecer las clases, objetos, atributos y operaciones

II. Breve Tour por UML

Page 10: Java certificacion

Ejemplos (Clase y Visibilidad)

Alumno

DNI : char[10]número_exp : intnombre : char[50]

alta()poner_nota(asignatura : char *, año : int, nota : float)matricular(cursos : asignatura, año : int)listar_expediente()

II. Breve Tour por UML

Page 11: Java certificacion

… Ejemplos (Asociación)

ProfesorDepartamento

10..1

director

1

dirige

0..1

II. Breve Tour por UML

Page 12: Java certificacion

… Ejemplos (Clase Asociación)

II. Breve Tour por UML

Empresa Empleado

1..** 1..**

trabajadoresempleador

Cargo

nombresueldo 0..1

1..*

superior

subordinado 1..*

0..1

Page 13: Java certificacion

… Ejemplos (Generalización)

II. Breve Tour por UML

Trabajador

Directivo Administrativo Obrero

{ disjunta, completa }

Page 14: Java certificacion

… Ejemplos

Prácticas 4-8

II. Breve Tour por UML

Avión militar Avión comercial

Avión de carga Avión de pasajeros

Motor Vendedor de billetes

Avión

1..4

1

1..4

1

Piloto

Reserva

n

1

n

1

Línea aérea

Vuelon1 n1

1..2

n

1..2

nn1 n1

1

n

1

n{ disjunta, completa }

{ disjunta, completa }

Page 15: Java certificacion

El lenguaje de programación JAVA

Parte 1 Fundamentos

Page 16: Java certificacion

Declarando Clases en JAVA

La Forma es la Siguiente:

<modifier>* class <class_name> {<attribute_declaration>*<constructor_declaration>*<method_declaration>*

}

Code 3 Example Class Declaration

public class vehicle {private double maxLoad;public void setMaxLoad(double value) {

maxLoad = value;}

}

Page 17: Java certificacion

Declarando Atributos

Forma:

<modifier>* <type> <name> [ = <initial_value>];

Ejemplo:

public class Foo {private int x;private float y = 10000.0F;private String name = "Bates Motel";

}

Page 18: Java certificacion

Declarando Métodos

Forma:

<modifier>* <return_type> <name> ( <argument>* ) {<statement>*

}

Ejemplo:

public class Dog { private int weight;public int getWeight( ) {

return weight;}public void setWeight(int newWeight) {

if( newWeight > 0 ) {weight = newWeight ;

}}

}

Page 19: Java certificacion

Accediendo a Miembros del objeto

Ejemplo:

public class TestDog {public static void main(String[ ] args) {

Dog d = new Dog();system.out.println("Dog d's weight is: "+ d.getWeight());d.setWeight(42);system.out.println("Dog d's weight is: "+ d.getWeight());d.setWeight(-42);system.out.println("Dog d's weight is: "+ d.getWeight());

} }

Salida:

Dog d's weight is 0 Dog d's weight is 42 Dog d's weight is -42

Page 20: Java certificacion

Información Oculta

Ejemplo:

public class MyDate {public int day;public int month;public int year;

}

Puede dar lugar a errores como:

d.day = 32; //dia invalido d.month = 2; d.day = 30; //posible pero incorrecto d.day = d.day + 1;

Page 21: Java certificacion

Declarando Constructores

Forma:

[ <modifier> ] <class_name> ( <argument>* ) {<statement>*

}

Ejemplo:

public class Dog {private int weight;

public Dog() {weight = 42;

} }

Recuerda, los constructores no tienen valores de retorno y no se heredan

Page 22: Java certificacion

La sentencia package

Forma:

package <top_pkg_name> [. <sub_pkg_name> ]* ;

Ejemplo:

package shipping.domain ;

// Class Vehicle of the 'domain' sub-package within // the 'shipping' application package. public class Vehicle {

... }

Page 23: Java certificacion

La Sentencia import

Forma:

import <pkg_name> [ .<sub_pkg_name> ] .<class_name> ;ó import <pkg_name> [ .<sub_pkg_name> ].* ;

Ejemplo:

package shipping.reports ;

import shipping.domain.* ; import java.util.List ; import java.io.* ;

public class VehicleCapacityReport {private Company companyForReport ;

... }

Page 24: Java certificacion

Certificación JAVA

Parte 2 Tipos de Datos y Paso de Parámetros

Page 25: Java certificacion

ComentariosExisten 3 tipos diferentes de comentarios:

// Comentario en una línea

/* * Comentarios en una * o mas lineas */

/** * Comentario de Documentación * Puede abarcar una o mas lineas * */

Nota: El formato de Documentación es para ser usado con La herramienta Javadoc, que genera documentación en HTML

Page 26: Java certificacion

Palabras Clave en JAVA

abstract continue for new switch

assert default goto package synchronized

boolean do if private this

break double implements protected throw

byte else import public throws

case enum instanceof return transient

catch extends int short try

char final interface static void

class finally long strictfp volatile

const float native super while

Page 27: Java certificacion

Tipos de Datos básicos en JAVA

Tipos PrimitivosEl Lenguaje de Programación JAVA permite 8 tipos de datos primitivos, que pueden ser considerados en 4 categorías:• Lógicos – boolean• Textuales – char• Enteros – byte, short, int y long• De Punto Flotante – double y float

BoleanosEjemplo:

Bolean truth = true;Notas:

• Los valores true, false y null, se escriben con minusculas y no en mayusculas como en otros Lenguajes.

• No existen equivalencias entre enteros y boleanos, Cuando un valor boleano es requerido, solo se aceptan valores boleanos

Page 28: Java certificacion

Tipos de Datos Básicos en JAVA

CharEjemplos:

‘a’ La letra a‘\t’ Tabulacion‘\u????’ Carácter especifico de Unicode

StringEjemplos:

String greeting = “Good Morning !! \n”;String errorMessage = “Record not Found !”;String str1,str2;

Nota:A diferencia de C y C++, las cadenas no terminan con \0

Page 29: Java certificacion

Tipos de Datos Básicos en JAVA

Integrales – int, byte, short y longEjemplos:

2 Forma decimal para el dos077 El 0 al inicio indica un valor octal0xBAAC El 0x al inicio indica un valor hexadecimal2L La L al final indica un tipo de dato long

Punto Flotante – float y doubleEjemplos:

3.14 un tipo de dato double simple6.02E23 un tipo de dato double largo2.718F un tipo de dato flota simple123.4E+306D un tipo de dato double largo con la D redundante.

Page 30: Java certificacion

Datos Básicos en JAVA

Page 31: Java certificacion

Reservado de Memoria

my_birth ????

Ejemplo:MyDate my_birth;

MyDate my_birth = new MyDate(22 , 7 , 1964);

my_birth ????

day 22month 7year 1964

Page 32: Java certificacion

Paso por Valor

public class PassTest {

public static void changeInt(int value) {value=55;

}

public static void changeObjectRef(MyDate ref) {ref = new MyDate(1 , 1 , 2000);

}

public static void changeObjectAttr(MyDate ref) {ref.SetDay(4);

}

Page 33: Java certificacion

Paso por Valorpublic static void main(String args[]) {

MyDate date;int val;

val=11;

changeInt( val );System.out.println("Int value is: " + val);date = new MyDate(22,7,1964);ChangeObjectRef(date);System.out.println("MyDate: " + date);changeObjectAttr(date);System.out.println("MyDate: " + date);

}}

Salida:Int value is: 11MyDate: 22-7-1964MyDate: 4-7-1964

Page 34: Java certificacion

Ejemplos

public class ShirtTest {

public static void main(String args[]) {

Shirt myShirt;myShirt = new Shirt();

myShirt.displayShirtInformation();}

}

Page 35: Java certificacion

Ejemplos

public class ShirtTestTwo {

public static void main(String args[]) {

Shirt myShirt = new Shirt();Shirt yourShirt = new Shirt();

myShirt.displayShirtInformation();yourShirt.displayShirtInformation();

myShirt.colorCode = 'R';yourShirt.colorCode = 'G';

myShirt.displayShirtInformation();yourShirt.displayShirtInformation();

}}

Page 36: Java certificacion

Variable y Objeto son Referenciados

Page 37: Java certificacion

Variable y Objeto son Referenciados

Page 38: Java certificacion

Mas Ejemplos

public class Rectangulo extends Geometria { // definición de variables miembro de la clase

private static int numRectangulos = 0; protected double x1, y1, x2, y2; // constructores de la clase public Rectangulo(double p1x, double p1y, double p2x, double p2y) { x1 = p1x;

x2 = p2x;y1 = p1y;y2 = p2y;numRectangulos++;

} public Rectangulo() { this(0, 0, 1.0, 1.0); } // definición de métodos

public double perimetro() { return 2.0 * ((x1-x2)+(y1-y2)); }public double area() { return (x1-x2)*(y1-y2); }

} // fin de la clase Rectangulo

Page 39: Java certificacion

VariosOperador instanceofEl operador instanceof permite saber si un objeto pertenece a una determinada clase o no.Es un operador binario cuya forma general es:

objectName instanceof ClassNamey que devuelve true o false según el objeto pertenezca o no a la clase.

Variables miembro de clase (static)Una clase puede tener variables propias de la clase y no de cada objeto. A estas variables se les llama variables de clase o variables static.

VARIABLES FINALESUna variable de un tipo primitivo declarada como final no puede cambiar su valor a lo largo de la ejecución del programa. Puede ser considerada como una constante, y equivale a la palabra const de C/C++.

Page 40: Java certificacion

Permiso de Acceso en JAVA

Page 41: Java certificacion

Certificación JAVA

Parte 3 Clases, Métodos y Atributos

Page 42: Java certificacion

Elevadorpublic class Elevator {

public boolean doorOpen= false;public int currentFloor= 1;

public final int TOP_FLOOR = 5;public final int BOTTOM_FLOOR = 1;

public void openDoor() {System.out.println("Opening Door");doorOpen = true;System.out.println("Door is Open");

}

public void closeDoor() {System.out.println("Closing Door");doorOpen = false;System.out.println("Door is Closed");

}

public void goUp() {System.out.println("Going up one floor");currentFloor++;System.out.println("Floor: "+currentFloor);

}

Page 43: Java certificacion

Elevadorpublic void goDown() {System.out.println("Going Down one floor");currentFloor--;System.out.println("Floor: "+currentFloor);

}

public void setFloor(int desiredFloor) {while(currentFloor != desiredFloor) {

if(currentFloor < desiredFloor) {goUp();

}else {

goDown();}

}}

public int getFloor() {return currentFloor;

}

public boolean checkDoorStatus() {return doorOpen;

}}

Page 44: Java certificacion

Elevatorpublic class ElevatorTestTwo {

public static void main(String Args[]) {Elevator myElevator = new Elevator();

myElevator.openDoor();myElevator.closeDoor();myElevator.goUp();myElevator.goUp();myElevator.goUp();myElevator.openDoor();myElevator.closeDoor();myElevator.goDown();myElevator.openDoor();myElevator.closeDoor();myElevator.goDown();

int curFloor = myElevator.getFloor();System.out.println("Current Floor: "+curFloor);

myElevator.setFloor(curFloor+1);

myElevator.openDoor();}

}

Page 45: Java certificacion

Estaticos

Declarando Metodos Estaticos

Los metodos estaticos son declarados utilizando la palabra clave "static".Por ejemplo:

static Properties getProperties()

Invocando metodos Estaticos

Debido a que los metodos de clase o estaticos no son parte de cada instancia de la clase, No se debe de utilizar un objeto referencia para invocarlos, en su lugar se debe de utilizar el nombre de la clase.

Sintaxis:Classname.method();

Page 46: Java certificacion

Estaticos

Declarando variables Estaticas

Otro uso de la palabra clave static es para declarar variables de lasque solo puede haber una copia en momoria asociada a la clase, nouna copia por cada instancia de la clase.Ejemplo:

static doublesalesTax = 8.25;

Forma de acceso

De igual manera que los metodos, se debe de utilizar el nombre de la clase.Ejemplo:

Classname.variable;

Page 47: Java certificacion

SobreCarga

public class calculator {

public int sum(int numberOne, int numbreTwo) {System.out.println("Method One");return numberOne + numberTwo;

}

public float sum(float numberOne, float numbreTwo) {System.out.println("Method Two");return numberOne + numberTwo;

}

public float sum(int numberOne, float numbreTwo) {System.out.println("Method Three");return numberOne + numberTwo;

}}

Page 48: Java certificacion

SobreCarga

public class CalculatorTest {

public static void main(String Args[]) {Calculator myCalculator = new Calculator();

int totalOne = myCalculator.sum(2,3);System.out.println( totalOne );

float totalTwo = myCalculator.sum( 15.99F , 12.85F );System.out.println( totalTwo );

float totalThree = myCalculator.sum( 2 , 12.85F );System.out.println( totalThree );

}}

Page 49: Java certificacion

Elevador Encapsuladopublic class PrivateElevator2 {

private boolean doorOpen= false;private int currentFloor= 1;private int weight= 0;

private final int CAPACITY = 100;private final int TOP_FLOOR = 5;private final int BOTTOM_FLOOR = 1;

public void openDoor() {doorOpen = true;

}

public void closeDoor() {calculateCapacity();

if(weight<=CAPACITY) {doorOpen = false;

}else { System.out.println("The elevator has exceeded capacity"); System.out.println("Doors will Remain open until someone exits");

}}

Page 50: Java certificacion

private void calculateCapacity() {weight =(int) (Math.random() * 1500);System.out.println("The weight is: "+weight);

}

public void goUp() {if(!doorOpen) {

if(currentFloor<TOP_FLOOR) {currentFloor++;System.out.println(currentFloor);

}else {

System.out.println("Already on top Floor.");}

}else {

System.out.println("Doors Still Open");}

}

Page 51: Java certificacion

public void goDown() {if(!doorOpen) {

if(currentFloor>BOTTOM_FLOOR) {currentFloor--;System.out.println(currentFloor);

}else {

System.out.println("Already on Bottom Floor.");}

}else {

System.out.println("Doors Still Open");}

}

Page 52: Java certificacion

public void setFloor(int desiredFloor) { if((desiredFloor>=BOOTOM_FLOOR) && (desiredFloor<=TOP_FLOOR))

while(currentFloor != desiredFloor) {if(currentFloor < desiredFloor) {

goUp();}else {

goDown();}

} } else {

System.out.println("Invalid Floor"); }}

public int getFloor() {return currentFloor;

}

public boolean checkDoorStatus() {return doorOpen;

}}

Page 53: Java certificacion

Creando ArreglosSe pueden crear arreglos usando la palabra clave new.Por Ejemplo:

s=new char[26];

La linea anterior crea un arreglo de 26 caracteres,los elementos soninicializados con su valor por default (En este caso '\u0000')

Se debe de inicializar para que sea practico:

public char[ ] createArray() {char [ ]s;

s=new char[26];for(int i=0;i<26;i++) {

s[i]=(char)('A'+i);}return s;

}

Page 54: Java certificacion

Creando Arreglos de Referencias

Se pueden crear arreglos de Objetos

p=new Point[10];

Se crea un arreglo de 10 referencias de tipo Point,Sin embargo no se crean 10 objetos de tipo Point, Se tienen que crear por separado.

public Point[ ] createArray() {Point p[ ];

p= new Point[10];for(int i=0;i<10;i++) {

p[i]=new Point(i, i+1);}return p;

}

Page 55: Java certificacion

Podemos crearlos con valores iniciales:String[ ]names = {

"Georgiana","Jen","Simon"

};

que es equivalente a:

String[ ] names;names=new String[3];names[0]="Georgiana";names[0]="Jen";names[0]="Simon";

Se puede utilizar para cualquier objeto:

MyDate[ ] dates = {new MyDate(22, 7, 1964),new MyDate(1, 1, 2000),new MyDate(22, 12, 1964);

};

Page 56: Java certificacion

El manejo de arreglosMultidimensionales en JAVA es muy Particular,ya que son arreglos de arreglos, por ejemplo arreglos de dos dimensiones:

int [ ][ ] twoDim = new int [4][ ];twoDim[0]=new int[5];twoDim[1]=new int[5];

o tambien permite una forma mas conocida:

int [ ][ ] twoDim = new int [4][5];

Arreglos Multidimensionales

Page 57: Java certificacion

Limites del Arreglo

El numero de indices siempre inicia en cero.El numero de elementos en el arreglo es almacenado comoparte del arreglo en el campo length.Si se quiere acceder a elementos del arreglo fuera del rangouna excepcion es arrojada.

Ejemplo:public void printElements(int[ ] List) {

for(int i=0;i<List.length;i++) {System.out.println(list[i]);

}}

Page 58: Java certificacion

Version Mejorada del for para Arreglos

Ejemplo:

public void printElements(int[ ] list) {for( int element : list ) {

System.out.println(element);}

}

Esta mejora es exclusiva de la version 5.0 de JAVA

Page 59: Java certificacion

Modificando el Tamaño del Arreglo

Despues de que el arreglo es creado, no se puede modificar el tamañodel mismo, sin embargo es posible utilizar la misma referencia paraseñalar un nuevo arreglo.

Ejemplo:

int[ ] myArray = new int[6]; myArray =new int[10];

La primera referencia se pierde

Page 60: Java certificacion

Copiando Arreglos

JAVA provee un método especial en la clase System, este método es arraycopy()

Ejemplo:

int[ ] myArray = { 1, 2, 3, 4, 5, 6 };

int[ ] hold = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };

System.arraycopy(myArray, 0, hold, 0, myArray.length );

Al terminar el arreglo hold contendra: 1,2,3,4,5,6,4,3,2,1

Nota: Este método solo copia referencias, no objetos.

Page 61: Java certificacion

Construyendo e Inicializando Objetos - Un breve Repaso

El proceso completo, para la creacion de objetos es el siguiente:

Primero se reserva la memoria para todo el objeto y a las variablesde instancia le son asignados sus valores por default, posteriormentelos constructores de mayor nivel son llamados y los siguientes pasosson ejecutados recursivamente segun sea el arbol de Herencia.

1.-Obtener los parametros del constructor

2.-Si existe un this(), llamar recursivamente, y luego saltar al paso 5

3.-Llamar recursivamente al super explicito o implicito (Ecepto para Object,ya que esta clase no tiene padres).

4.-Ejecutar los inicializadores de las variables de instancia explicitos

5.-Ejecutar el cuerpo del Constructor

Page 62: Java certificacion

Ejemplo:

public class Object { public Object() { }}

public class Employee extends Object {

private String name; private double salary = 15000.00; private Date birthDate;

public Employee(String n, Date DoB) {name=n;birthDate=DoB;

}

public Employee(String n) {this(n , null);

}}

Page 63: Java certificacion

public class Manager extends Employee { private String department;

public Manager(String n, String d) {super(n);department = d;

}}

Page 64: Java certificacion

Los pasos siguientes es la secuencia que se realizo al construirnew Manager("Joe Smith","sales");

-Inicializacion Basica -Se reservo memoria para el objeto Manager -Se inicializaron todas las variables de instancia con sus valores por default-LLamada al Constructor: Manager("Joe Smith","sales") -Se obtuvo los parametros: n="Joe Smith", d="Sales" -No hay llamada explicita a this -Se llama al Super(n) para Employee(String) -Obtiene parametros: n="Joe Smith" -Se llama a this(n,null) para Employee(String, Date) -Obtenemos parametros: n="Joe Smith", DoB=null -No hay llamada a this explicita -Llamada al super() para Object -No se necesita obtener parametros

-No hay llamada a this-No hay llamada a un Super (Object es la raiz)-No hay variables de inicializacion explicitas para Object-No hay cuerpo del Constructor

-Se inicializan las variables de Employee explicitas: salary=15000.00 -Se ejecuta el cuerpo: name="Joe Smith"; date=NULL; -Se saltan los pasos 3 y 4 -Se ejecuta el cuerpo: No hay demas cuerpo en Employee(String) -No hay inicializacion explicita para Manager -Se ejecuta el cuerpo: department="Sales"

Page 65: Java certificacion

Certificación JAVA

Parte 4 Clases Abstractas y Excepciones

Page 66: Java certificacion

El metodo equalspublic class My Date { private int day;

private int month;private int year;

public MyDate(int day,int month,int year) {this.day=day;this.month=month;this.year=year;

}

public boolean equals(Object o) { boolean result=false; if( (o!=null) && (o instanceof MyDate) ) { MyDate d= (MyDate) o; if( (day==d.day) && (month==d.month) && (year==d.year) )

{ result=true; } } return result;}

public int hashCode() { return (day ^ month ^ year);}

}

Page 67: Java certificacion

equals

class TestEquals {

public static void main(String []args) { MyDate date1 = new MyDate(14,3,1976);

MyDate date2 = new MyDate(14,3,1976);

if(date1==date2) { System.out.println("date1 is identical to date2");} else { System.out.println("date1 is not identical to date2");}

if(date1.equals(date2)) { System.out.println("date1 is equal to date2");} else { System.out.println("date1 is not equal to date2");}

Page 68: Java certificacion

equals -Continuación

System.out.println("set date2 = date1;");date2=date1;

if(date1==date2) { System.out.println("date1 is identical to date2");} else { System.out.println("date1 is not identical to date2");}

}}

Page 69: Java certificacion

Clases Wrapper

int pInt = 420;Integer wInt = new Integer(pInt);int p2=wInt.intValue();

int x=Integer.ValueOf(str).intvalue();

ó

int x=Integer.parseInt(str);

De forma automatica

int pInt = 420;Integer wInt = pInt;int p2=wInt;

Nota: Una vez que la clase wrapper se le asigna un valor, este ya no se puede modificar.

Page 70: Java certificacion

Inicializadores Estaticos

public class Count4 {public static int counter;static {

counter=Integer.getInteger("myApp.Count4.counter").intValue();}

}

public class TestStaticInit {public static void main(String []args) { System.out.println("counter ="+ Count4.counter);}

}

Page 71: Java certificacion

Nuevo Tipo Enumeradopackage cards.domain;public enum Suit {

SPADES,HEARTS,CLUBS,DIAMONDS

}

package cards.domain;

public class PlayingCard { private Suit suit; private int rank;

public PlayingCard(Suit suit,int rank) {this.suit=suit;this.rank=rank;

}

public Suit getSuit() {return suit;

}

Page 72: Java certificacion

Tipo Enumerado -Continuación

public String getSuitName() {String name="";switch( suit ) {

case SPADES: name="Spades"; break;case SPADES: name="Spades"; break;case SPADES: name="Spades"; break;case SPADES: name="Spades"; break;default:

}return name;

}}

Page 73: Java certificacion

Tipo Enumerado – Avanzado

package cards.domain;

public enum Suit {SPADES ("Spades"),HEARTS ("Hearts"),CLUBS ("Clubs"),DIAMONDS ("Diamonds");

private final String name;

private Suit(String name) {this.name=name;

}

public String getName() {return name;

}}

Page 74: Java certificacion

package cards.tests;

import cards.domain.PlayingCard;import cards.domain.Suit;

public class TestPlayingCard {

public static void main(String [ ]args) {

PlayingCard card1=new PlayingCard(Suit.SPADES,2);

System.out.println("card1 is the "+card1.getRank()+" of "+card1.getName()); }}

Tipo Enumerado – Avanzado

Page 75: Java certificacion

Clases Abstractas

public class ShippingMain { public static void main(String []args) {

Company c=new Company();

c.addVehicle(new Truck(10000.0));c.addVehicle(new Truck(15000.0));c.addVehicle(new RiverBarge(500000.0));c.addVehicle(new Truck(9500.0));c.addVehicle(new RiverBarge(750000.0));

FuelNeedsReport report=new FuelNeedsReport(c);

report.generateText(System.out); }}

Page 76: Java certificacion

Clases Abstractaspublic class FuelNeedsReport { private Company company;

public FuelNeedsReport(Company company) {this.company=company;

}

public void generateText(PrintStream output) {Vehicle v;double fuel;double total_fuel = 0.0 ;

for(int i=0;i<company.getFleetSize();i++) { v=company.getVehicle(i); fuel=v.calcTripDistance()/v.calcFuelEfficency();

output.println("Vehicle "+v.getName()+" needs "+fuel+" liters of fuel.");

total_fuel+=fuel;}output.println("Total fuel needs is "+total_fuel+"liters.");

}}

Page 77: Java certificacion

Clases Abstractas

public class abstract class Vehicle { public abstract double calcFuelEfficiency(); public abstract double calcTripDistance();}

Page 78: Java certificacion

Exceptions

public class AddArguments { public static void main(String []args) {

int sum=0;for(int i=0;i<args.length;i++) { sum+=Integer.parseInt(args[i]);}System.out.println("Sum = "+sum);

}}

Este codigo manda una excepcion si los argumentos del programa no son enteros.

Page 79: Java certificacion

La Sentencia try-catch

public class AddArguments2 { public static void main(String [ ]args) {

try { int sum=0; for(int i=0;i<args.length;i++) { sum+=Integer.parseInt(args[i]); } System.out.println("Sum = "+sum);} catch (NumberFormatException nfe) { System.err.println("One of the command-line arguments is not an

integer"); } }}

Page 80: Java certificacion

Manejo de Excepciones

public class AddArguments3 { public static void main(String [ ]args) {

int sum=0;for(int i=0;i<args.length;i++) { try { sum+=Integer.parseInt(args[i]); } catch (NumberFormatException nfe) { System.err.println("["+args[i]+"]is not an integer"

+"and will not be included in the sum."); }}System.out.println("Sum = "+sum);

}}

Page 81: Java certificacion

La Cláusula finally

try {startFaucet();waterLawn();

} catch (BrokenPipeException e) {logProblem(e);

} finally {stopFaucet();

}

Page 82: Java certificacion

Sobreescritura de Métodos y Excepciones

public class TestA {public void MethodA() throws IOException {

//Manejo de Codigo}

}

public class TestB1 extends TestA {public void MethodA() throws EOFException {

//Manejo de Codigo}

}

public class TestB2 extends TestA {public void MethodA() throws Exception {

//Manejo de Codigo}

}

Page 83: Java certificacion

Creando tus Propias Excepciones

public class ServerTimedOutException extends Exception { private int port;

public ServerTimedOutException (String message, int port) {super(message);this.port=port;

}

public int getPort() {return port;

}}

para lanzar tu propia excepcion throw new ServerTimedOutException("Could not connect",80);

Page 84: Java certificacion

Lanzando Excepciones Definidas por el usuario

public void connectMe(String serverName) throws ServerTimedOutException {

boolean succesful; int portToConnect=80;

succesful = open(serverName,portToConnect);

if(!succesful) {throw new ServerTimedOutException("Could not

connect",portToConnect); }}

Page 85: Java certificacion

Manejo de Excepciones definidas por el usuario

public void findServer() { try {

connectMe(defaultServer); } catch (ServerTimedOutException e) {

System.out.println("Server Timed out, Trying alternative");try { connectMe(alternativeServer);} catch (ServerTimedOutException e1) {

System.out.println("Error: "+e1.getMessage()+"connecting to port "+e1.getPort());

} }}

Page 86: Java certificacion

Certificación JAVA

Parte 5 Hilos (Threads)

Page 87: Java certificacion

Creación de un Hilo

public class ThreadTester { public static void main(String args[]) {

HelloRunner r=new HelloRunner();Thread t=new Thread(r);t.start();

}

class helloRunner implements Runnable { int i; public void run() {

i=0;while(true) { System.out.println("Hello " + i++); if(i==50) break;}

} }

Page 88: Java certificacion

Ciclo de vida de un Hilo

Page 89: Java certificacion

Deteniendo un hilo

class Runner implements Runnable { private boolean timeToQuit=false; public void run() {

while( !timeToQuit ) { // realiza trabajo hasta que le digamos que pare}

}

public void stopRunning() {timeToQuit=true;

} }

Page 90: Java certificacion

Deteniendo un hilo -Continuacion

public class threadController { private Runner r=new Runner(); private Thread t=new Thread(r);

public void startThread() {t.start();

}

public void stopThread() {r.stopRunning();

}}

Page 91: Java certificacion

Referencia a si mismo

public class NameRunner implements Runnable { public void run() {

while( true ) { // realiza trabajo sin parar}//Imprime el nombre del hilo actualSystem.out.println("Thread "+ Thread.currentThread().getName()+"

completed"); }

}

Page 92: Java certificacion

Otras formas de implementar Hilos

public class MyThread extends Thread { public void run() { while(true) {

//realiza varias acciones

try { sleep( 100 ); }catch( InterruptedException e ) { //sueño interrumpido }

} public static void main(String args[]) {

Thread t=new MyThread();t.start();

} }

Page 93: Java certificacion

Un Ejemplo Completo – Productor Consumidor

public class Producer implements Runnable { private SyncStack theStack; private int num; private static int counter=1;

public Producer(SyncStack s) { theStack=s; num=counter++; }

public void Run() {char c;

for(int i=0;i<200;i++) { c=(char)(Math.random()*26+'A'); theStack.push(c); System.out.println("Producer-"+num+": "+c); try { Thread.sleep((int)(Math.random()*300)); }catch ( InterruptedException e ) { //Se ignora }

} } }

Page 94: Java certificacion

Consumidor

public class Consumer implements Runnable { private SyncStack theStack; private int num; private static int counter=1;

public Consumer(SyncStack s) { theStack=s; num=counter++; }

public void Run() {char c;

for(int i=0;i<200;i++) { c=theStack.pop(); System.out.println("Consumer-"+num+": "+c); try { Thread.sleep((int)(Math.random()*300)); }catch ( InterruptedException e ) { //Se ignora }

} } }

Page 95: Java certificacion

El stack

import java.util.*

public class SyncStack { private List<Character> buffer=new ArrayList<Character>(400);

public synchronized char pop() {char c;while(buffer.size()==0) { try {

this.wait(); }catch( InterruptedException e ) {

//se ignora }

}c=buffer.remove(buffer.size()-1);return c;

}

public synchronized void push(char c) {this.notify();buffer.add(c);

} }

Page 96: Java certificacion

Prueba

public class SyncTest { public static void main(String args[]) {

SyncStack stack=new SyncStack();

Producer p1 = new Producer(stack);Thread prodT1 = new Thread(p1);prodT1.start();

Producer p2 = new Producer(stack);Thread prodT2 = new Thread(p2);prodT2.start();

consumer c1 = new Consumer(stack);Thread consT1 = new Thread(c1);consT1.start();

consumer c2 = new Consumer(stack);Thread consT2 = new Thread(c2);consT2.start();

}}