SlideShare una empresa de Scribd logo
1 de 96
El lenguaje de programación
           JAVA

     Dr. Hector G. Perez Gonzalez
   M.C. Froylan Eloy Hernandez Castro
The green project




                    *7


                         Oak




                               Java
Java
Java
J2Eava
Presentacion   Presentacion   Negocio    Base de
  Cliente        Servidor     servidor    Datos
                                         Empresa




                                                   Java
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”);
                    }
           }
El lenguaje de programación
           JAVA

Parte 0    Diseño Orientado a Objetos
II. Breve Tour por UML



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



Ejemplos (Clase y Visibilidad)
II. Breve Tour por UML



… Ejemplos (Asociación)



                  dirige   director
   Departamento                           Profesor
                  0..1                1
II. Breve Tour por UML



… Ejemplos (Clase Asociación)

               empleador               trabajadores
     Empresa                                               Empleado
               *                                    1..*




                            Cargo
                                         superior
                           nombre
                           sueldo       0..1

                    subordinado 1..*
II. Breve Tour por UML



… Ejemplos (Generalización)


                               Trabajador




     { disjunta, completa }




    Directivo                 Administrativo   Obrero
II. Breve Tour por UML



… Ejemplos
              Motor                                      Piloto          Vendedor de billetes

                     1..4                                    1..2                   1




                     1                                                              n
                                                              n
                            1                      n                 1     n
                  Avión                                  Vuelo                 Reserva

                                                             n
                      { disjunta, completa }


                                                             1

  Avión militar             Avión comercial            Línea aérea


      { disjunta, completa }



                                                                                                Prácticas 4-8
           Avión de carga           Avión de pasajeros
El lenguaje de programación
           JAVA

     Parte 1   Fundamentos
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;
                  }
          }
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";
                  }
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 ;
                         }
                }
        }
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
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;
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
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 {
                     ...
           }
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 ;
            ...
          }
Certificación JAVA


Parte 2 Tipos de Datos y Paso de Parámetros
Comentarios
Existen 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
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
Tipos de Datos básicos en JAVA


      Tipos Primitivos
      El 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
      Boleanos
                   Ejemplo:
                              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
Tipos de Datos Básicos en JAVA


    Char
    Ejemplos:
           „a‟               La letra a
           „t‟              Tabulacion
           „u????‟          Carácter especifico de Unicode

    String
    Ejemplos:
           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
Tipos de Datos Básicos en JAVA

     Integrales – int, byte, short y long
     Ejemplos:
         2                  Forma decimal para el dos
         077                El 0 al inicio indica un valor octal
         0xBAAC             El 0x al inicio indica un valor hexadecimal
         2L                 La L al final indica un tipo de dato long


   Punto Flotante – float y double
   Ejemplos:
           3.14              un tipo de dato double simple
           6.02E23           un tipo de dato double largo
           2.718F            un tipo de dato flota simple
           123.4E+306D       un tipo de dato double largo con la D redundante.
Datos Básicos en JAVA
Reservado de Memoria


    Ejemplo:
           MyDate my_birth;

                my_birth             ????

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

               my_birth                ????

                  day                   22
                 month                   7
                  year                 1964
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);
             }
Paso por Valor
     public 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: 11
                           MyDate: 22-7-1964
                           MyDate: 4-7-1964
Ejemplos



           public class ShirtTest {

                   public static void main(String args[]) {

                            Shirt myShirt;
                            myShirt = new Shirt();

                            myShirt.displayShirtInformation();
                   }
           }
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();
                }
       }
Variable y Objeto son Referenciados
Variable y Objeto son Referenciados
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
Varios
Operador instanceof
El operador instanceof permite saber si un objeto pertenece a una
determinada clase o no.
Es un operador binario cuya forma general es:
                     objectName instanceof ClassName
y 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 FINALES
Una 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++.
Permiso de Acceso en JAVA
Certificación JAVA


   Parte 3 Clases, Métodos y Atributos
public class Elevator {
                                                                   Elevador
          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);
          }
public void goDown() {                                   Elevador
               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;
    }
}
public class ElevatorTestTwo {                                        Elevator
          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();
          }
}
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();
Estaticos
Declarando variables Estaticas

        Otro uso de la palabra clave static es para declarar variables de las
        que solo puede haber una copia en momoria asociada a la clase, no
        una 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;
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;
            }
   }
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 );
           }
  }
public class PrivateElevator2 {                           Elevador Encapsulado
          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");

                    }
          }
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");
         }
}
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");
         }
}
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;
         }
}
Creando Arreglos
Se 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 son
inicializados 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;
}
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;
}
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);
};
Arreglos Multidimensionales

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];
Limites del Arreglo
El numero de indices siempre inicia en cero.
El numero de elementos en el arreglo es almacenado como
parte del arreglo en el campo length.
Si se quiere acceder a elementos del arreglo fuera del rango
una excepcion es arrojada.



Ejemplo:
           public void printElements(int[ ] List) {
                    for(int i=0;i<List.length;i++) {
                               System.out.println(list[i]);
                    }
           }
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
Modificando el Tamaño del Arreglo


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

        Ejemplo:

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

La primera referencia se pierde
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.
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 variables
de instancia le son asignados sus valores por default, posteriormente
los constructores de mayor nivel son llamados y los siguientes pasos
son 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
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);
    }
}
public class Manager extends Employee {
 private String department;

    public Manager(String n, String d) {
           super(n);
           department = d;
    }
}
Los pasos siguientes es la secuencia que se realizo al construir
          new 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"
Certificación JAVA


  Parte 4 Clases Abstractas y Excepciones
El metodo equals
       public 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);
                  }
        }
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");
           }
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");
             }
       }
      }
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.
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);
               }
     }
Nuevo Tipo Enumerado
          package 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;
          }
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;
             }
           }
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;
                  }
          }
Tipo Enumerado – Avanzado


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());
    }
}
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);
            }
        }
Clases Abstractas
      public 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.");
          }
      }
Clases Abstractas



public class abstract class Vehicle {
  public abstract double calcFuelEfficiency();
  public abstract double calcTripDistance();
}
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.
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");
          }
  }
}
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);
  }
}
La Cláusula finally


try {
          startFaucet();
          waterLawn();
} catch (BrokenPipeException e) {
          logProblem(e);
} finally {
          stopFaucet();
}
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
                  }
        }
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);
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);
           }
       }
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());
               }
      }
    }
Certificación JAVA


      Parte 5 Hilos (Threads)
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;
                  }
          }
         }
Ciclo de vida de un Hilo
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;
         }
        }
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();
             }
         }
Referencia a si mismo


  public class NameRunner implements Runnable {

  public void run() {
          while( true ) {
            // realiza trabajo sin parar
          }
          //Imprime el nombre del hilo actual
          System.out.println("Thread "+ Thread.currentThread().getName()+"
                               completed");
  }

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

Más contenido relacionado

La actualidad más candente

.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup
 
Clase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpooClase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpoojorg_marq
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevjtk1
 
U0108985
U0108985U0108985
U0108985maur047
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++Karime Hernández
 
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...David Zapateria Besteiro
 
Programacion orientada-a-objetos
Programacion orientada-a-objetosProgramacion orientada-a-objetos
Programacion orientada-a-objetosDon Augusto
 
Tm05 modelo de_interacción
Tm05 modelo de_interacciónTm05 modelo de_interacción
Tm05 modelo de_interacciónJulio Pari
 
PROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETOPROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETOAnabel Jaramillo
 
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...David Zapateria Besteiro
 
10. programacion orientada a objetos en visual basic .net
10.  programacion orientada a objetos en visual basic .net10.  programacion orientada a objetos en visual basic .net
10. programacion orientada a objetos en visual basic .netjohnny herrera
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la pooBoris Salleg
 

La actualidad más candente (20)

.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 
Clase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpooClase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpoo
 
P2C2 Introducción a JEE5
P2C2 Introducción a JEE5P2C2 Introducción a JEE5
P2C2 Introducción a JEE5
 
Clases y Objetos
Clases y ObjetosClases y Objetos
Clases y Objetos
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
 
P2C5 Introducción a JEE5 - II
P2C5 Introducción a JEE5 - IIP2C5 Introducción a JEE5 - II
P2C5 Introducción a JEE5 - II
 
Unidad1 y 2
Unidad1 y 2Unidad1 y 2
Unidad1 y 2
 
U0108985
U0108985U0108985
U0108985
 
Intro
IntroIntro
Intro
 
Clase 2 Poo
Clase 2 PooClase 2 Poo
Clase 2 Poo
 
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
 
Programacion orientada-a-objetos
Programacion orientada-a-objetosProgramacion orientada-a-objetos
Programacion orientada-a-objetos
 
Tm05 modelo de_interacción
Tm05 modelo de_interacciónTm05 modelo de_interacción
Tm05 modelo de_interacción
 
PROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETOPROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETO
 
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
 
10. programacion orientada a objetos en visual basic .net
10.  programacion orientada a objetos en visual basic .net10.  programacion orientada a objetos en visual basic .net
10. programacion orientada a objetos en visual basic .net
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la poo
 

Similar a Java certificacion (20)

1 -programacion_oo
1  -programacion_oo1  -programacion_oo
1 -programacion_oo
 
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOSJAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
 
JAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASE
JAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASEJAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASE
JAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASE
 
Cap7 2
Cap7 2Cap7 2
Cap7 2
 
El lenguaje C++ (1).ppt
El lenguaje C++ (1).pptEl lenguaje C++ (1).ppt
El lenguaje C++ (1).ppt
 
El lenguaje C++.ppt
El lenguaje C++.pptEl lenguaje C++.ppt
El lenguaje C++.ppt
 
Java OO - Tema 06 - Interfaces
Java OO - Tema 06 -  InterfacesJava OO - Tema 06 -  Interfaces
Java OO - Tema 06 - Interfaces
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
JAVA OO - TEMA 01 - CLASES Y OBJETOS
JAVA OO - TEMA 01 - CLASES Y OBJETOSJAVA OO - TEMA 01 - CLASES Y OBJETOS
JAVA OO - TEMA 01 - CLASES Y OBJETOS
 
Clase 21 programacion ejb 3.0
Clase 21 programacion ejb 3.0Clase 21 programacion ejb 3.0
Clase 21 programacion ejb 3.0
 
instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajo
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es Vietnam
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con php
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Separata java script
Separata java scriptSeparata java script
Separata java script
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
 
Clase 2
Clase 2 Clase 2
Clase 2
 
Buenas prácticas para la construcción de software
Buenas prácticas para la construcción de softwareBuenas prácticas para la construcción de software
Buenas prácticas para la construcción de software
 

Último

El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 

Último (20)

El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 

Java certificacion

  • 1. El lenguaje de programación JAVA Dr. Hector G. Perez Gonzalez M.C. Froylan Eloy Hernandez Castro
  • 2. The green project *7 Oak Java
  • 6. Presentacion Presentacion Negocio Base de Cliente Servidor servidor Datos Empresa Java
  • 7. 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”); } }
  • 8. El lenguaje de programación JAVA Parte 0 Diseño Orientado a Objetos
  • 9. II. Breve Tour por UML 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
  • 10. II. Breve Tour por UML Ejemplos (Clase y Visibilidad)
  • 11. II. Breve Tour por UML … Ejemplos (Asociación) dirige director Departamento Profesor 0..1 1
  • 12. II. Breve Tour por UML … Ejemplos (Clase Asociación) empleador trabajadores Empresa Empleado * 1..* Cargo superior nombre sueldo 0..1 subordinado 1..*
  • 13. II. Breve Tour por UML … Ejemplos (Generalización) Trabajador { disjunta, completa } Directivo Administrativo Obrero
  • 14. II. Breve Tour por UML … Ejemplos Motor Piloto Vendedor de billetes 1..4 1..2 1 1 n n 1 n 1 n Avión Vuelo Reserva n { disjunta, completa } 1 Avión militar Avión comercial Línea aérea { disjunta, completa } Prácticas 4-8 Avión de carga Avión de pasajeros
  • 15. El lenguaje de programación JAVA Parte 1 Fundamentos
  • 16. 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; } }
  • 17. 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"; }
  • 18. 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 ; } } }
  • 19. 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
  • 20. 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;
  • 21. 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
  • 22. 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 { ... }
  • 23. 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 ; ... }
  • 24. Certificación JAVA Parte 2 Tipos de Datos y Paso de Parámetros
  • 25. Comentarios Existen 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
  • 26. 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
  • 27. Tipos de Datos básicos en JAVA Tipos Primitivos El 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 Boleanos Ejemplo: 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
  • 28. Tipos de Datos Básicos en JAVA Char Ejemplos: „a‟ La letra a „t‟ Tabulacion „u????‟ Carácter especifico de Unicode String Ejemplos: 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
  • 29. Tipos de Datos Básicos en JAVA Integrales – int, byte, short y long Ejemplos: 2 Forma decimal para el dos 077 El 0 al inicio indica un valor octal 0xBAAC El 0x al inicio indica un valor hexadecimal 2L La L al final indica un tipo de dato long Punto Flotante – float y double Ejemplos: 3.14 un tipo de dato double simple 6.02E23 un tipo de dato double largo 2.718F un tipo de dato flota simple 123.4E+306D un tipo de dato double largo con la D redundante.
  • 31. Reservado de Memoria Ejemplo: MyDate my_birth; my_birth ???? MyDate my_birth = new MyDate(22 , 7 , 1964); my_birth ???? day 22 month 7 year 1964
  • 32. 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); }
  • 33. Paso por Valor public 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: 11 MyDate: 22-7-1964 MyDate: 4-7-1964
  • 34. Ejemplos public class ShirtTest { public static void main(String args[]) { Shirt myShirt; myShirt = new Shirt(); myShirt.displayShirtInformation(); } }
  • 35. 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(); } }
  • 36. Variable y Objeto son Referenciados
  • 37. Variable y Objeto son Referenciados
  • 38. 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
  • 39. Varios Operador instanceof El operador instanceof permite saber si un objeto pertenece a una determinada clase o no. Es un operador binario cuya forma general es: objectName instanceof ClassName y 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 FINALES Una 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++.
  • 40. Permiso de Acceso en JAVA
  • 41. Certificación JAVA Parte 3 Clases, Métodos y Atributos
  • 42. public class Elevator { Elevador 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); }
  • 43. public void goDown() { Elevador 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; } }
  • 44. public class ElevatorTestTwo { Elevator 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(); } }
  • 45. 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();
  • 46. Estaticos Declarando variables Estaticas Otro uso de la palabra clave static es para declarar variables de las que solo puede haber una copia en momoria asociada a la clase, no una 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;
  • 47. 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; } }
  • 48. 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 ); } }
  • 49. public class PrivateElevator2 { Elevador Encapsulado 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"); } }
  • 50. 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"); } }
  • 51. 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"); } }
  • 52. 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; } }
  • 53. Creando Arreglos Se 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 son inicializados 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; }
  • 54. 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; }
  • 55. 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); };
  • 56. Arreglos Multidimensionales 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];
  • 57. Limites del Arreglo El numero de indices siempre inicia en cero. El numero de elementos en el arreglo es almacenado como parte del arreglo en el campo length. Si se quiere acceder a elementos del arreglo fuera del rango una excepcion es arrojada. Ejemplo: public void printElements(int[ ] List) { for(int i=0;i<List.length;i++) { System.out.println(list[i]); } }
  • 58. 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
  • 59. Modificando el Tamaño del Arreglo Despues de que el arreglo es creado, no se puede modificar el tamaño del mismo, sin embargo es posible utilizar la misma referencia para señalar un nuevo arreglo. Ejemplo: int[ ] myArray = new int[6]; myArray =new int[10]; La primera referencia se pierde
  • 60. 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.
  • 61. 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 variables de instancia le son asignados sus valores por default, posteriormente los constructores de mayor nivel son llamados y los siguientes pasos son 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
  • 62. 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); } }
  • 63. public class Manager extends Employee { private String department; public Manager(String n, String d) { super(n); department = d; } }
  • 64. Los pasos siguientes es la secuencia que se realizo al construir new 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"
  • 65. Certificación JAVA Parte 4 Clases Abstractas y Excepciones
  • 66. El metodo equals public 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); } }
  • 67. 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"); }
  • 68. 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"); } } }
  • 69. 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.
  • 70. 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); } }
  • 71. Nuevo Tipo Enumerado package 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; }
  • 72. 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; } }
  • 73. 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; } }
  • 74. Tipo Enumerado – Avanzado 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()); } }
  • 75. 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); } }
  • 76. Clases Abstractas public 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."); } }
  • 77. Clases Abstractas public class abstract class Vehicle { public abstract double calcFuelEfficiency(); public abstract double calcTripDistance(); }
  • 78. 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.
  • 79. 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"); } } }
  • 80. 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); } }
  • 81. La Cláusula finally try { startFaucet(); waterLawn(); } catch (BrokenPipeException e) { logProblem(e); } finally { stopFaucet(); }
  • 82. 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 } }
  • 83. 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);
  • 84. 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); } }
  • 85. 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()); } } }
  • 86. Certificación JAVA Parte 5 Hilos (Threads)
  • 87. 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; } } }
  • 88. Ciclo de vida de un Hilo
  • 89. 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; } }
  • 90. 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(); } }
  • 91. Referencia a si mismo public class NameRunner implements Runnable { public void run() { while( true ) { // realiza trabajo sin parar } //Imprime el nombre del hilo actual System.out.println("Thread "+ Thread.currentThread().getName()+" completed"); } }
  • 92. 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(); } }
  • 93. 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 } } } }
  • 94. 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 } } } }
  • 95. 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); } }
  • 96. 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(); } }