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                           ...
Una Aplicación Simple de JAVA                The TestGreeting.java Aplication        //        // Aplicación “Hola Mundo” ...
El lenguaje de programación           JAVAParte 0    Diseño Orientado a Objetos
II. Breve Tour por UMLDiagrama de Clases  El Diagrama de Clases es el diagrama principal para el   análisis y diseño  Un...
II. Breve Tour por UMLEjemplos (Clase y Visibilidad)
II. Breve Tour por UML… Ejemplos (Asociación)                  dirige   director   Departamento                           ...
II. Breve Tour por UML… Ejemplos (Clase Asociación)               empleador               trabajadores     Empresa        ...
II. Breve Tour por UML… Ejemplos (Generalización)                               Trabajador     { disjunta, completa }    D...
II. Breve Tour por UML… Ejemplos              Motor                                      Piloto          Vendedor de bille...
El lenguaje de programación           JAVA     Parte 1   Fundamentos
Declarando Clases en JAVA           La Forma es la Siguiente:           <modifier>* class <class_name> {                  ...
Declarando Atributos         Forma:          <modifier>* <type> <name> [ = <initial_value>];              Ejemplo:        ...
Declarando Métodos       Forma:       <modifier>* <return_type> <name> ( <argument>* ) {                <statement>*      ...
Accediendo a Miembros del objeto Ejemplo: public class TestDog {         public static void main(String[ ] args) {        ...
Información Oculta         Ejemplo:         public class MyDate {                 public int day;                 public i...
Declarando Constructores        Forma:        [ <modifier> ] <class_name> ( <argument>* ) {               <statement>*    ...
La sentencia package          Forma:          package <top_pkg_name> [. <sub_pkg_name> ]* ;          Ejemplo:           pa...
La Sentencia import      Forma:      import <pkg_name> [ .<sub_pkg_name> ] .<class_name> ;      ó      import <pkg_name> [...
Certificación JAVAParte 2 Tipos de Datos y Paso de Parámetros
ComentariosExisten 3 tipos diferentes de comentarios:         // Comentario en una línea         /*          *       Comen...
Palabras Clave en JAVAabstract   continue   for          new         switchassert     default    goto         package     ...
Tipos de Datos básicos en JAVA      Tipos Primitivos      El Lenguaje de Programación JAVA permite 8 tipos de datos primit...
Tipos de Datos Básicos en JAVA    Char    Ejemplos:           „a‟               La letra a           „t‟              Tabu...
Tipos de Datos Básicos en JAVA     Integrales – int, byte, short y long     Ejemplos:         2                  Forma dec...
Datos Básicos en JAVA
Reservado de Memoria    Ejemplo:           MyDate my_birth;                my_birth             ????           MyDate my_b...
Paso por Valor     public class PassTest {             public static void changeInt(int value) {                      valu...
Paso por Valor     public static void main(String args[]) {                       MyDate date;                       int v...
Ejemplos           public class ShirtTest {                   public static void main(String args[]) {                    ...
Ejemplos       public class ShirtTestTwo {                public static void main(String args[]) {                        ...
Variable y Objeto son Referenciados
Variable y Objeto son Referenciados
Mas Ejemplospublic class Rectangulo extends Geometria {       // definición de variables miembro de la clase             p...
VariosOperador instanceofEl operador instanceof permite saber si un objeto pertenece a unadeterminada clase o no.Es un ope...
Permiso de Acceso en JAVA
Certificación JAVA   Parte 3 Clases, Métodos y Atributos
public class Elevator {                                                                   Elevador          public boolean...
public void goDown() {                                   Elevador               System.out.println("Going Down one floor")...
public class ElevatorTestTwo {                                        Elevator          public static void main(String Arg...
EstaticosDeclarando Metodos Estaticos        Los metodos estaticos son declarados utilizando la palabra clave "static".   ...
EstaticosDeclarando variables Estaticas        Otro uso de la palabra clave static es para declarar variables de las      ...
SobreCarga   public class calculator {            public int sum(int numberOne, int numbreTwo) {                      Syst...
SobreCarga  public class CalculatorTest {           public static void main(String Args[]) {                     Calculato...
public class PrivateElevator2 {                           Elevador Encapsulado          private boolean doorOpen= false;  ...
private void calculateCapacity() {         weight =(int) (Math.random() * 1500);         System.out.println("The weight is...
public void goDown() {         if(!doorOpen) {                  if(currentFloor>BOTTOM_FLOOR) {                           ...
public void setFloor(int desiredFloor) {      if((desiredFloor>=BOOTOM_FLOOR) && (desiredFloor<=TOP_FLOOR))               ...
Creando ArreglosSe pueden crear arreglos usando la palabra clave new.Por Ejemplo:         s=new char[26];La linea anterior...
Creando Arreglos de ReferenciasSe pueden crear arreglos de Objetos         p=new Point[10];Se crea un arreglo de 10 refere...
Podemos crearlos con valores iniciales:       String[ ]names = {                 "Georgiana",                 "Jen",      ...
Arreglos MultidimensionalesEl manejo de arreglosMultidimensionales en JAVA es muy Particular,ya que son arreglos de arregl...
Limites del ArregloEl numero de indices siempre inicia en cero.El numero de elementos en el arreglo es almacenado comopart...
Version Mejorada del for para ArreglosEjemplo:           public void printElements(int[ ] list) {                    for( ...
Modificando el Tamaño del ArregloDespues de que el arreglo es creado, no se puede modificar el tamañodel mismo, sin embarg...
Copiando ArreglosJAVA provee un método especial en la clase System,este método es arraycopy()        Ejemplo:int[ ] myArra...
Construyendo e Inicializando Objetos - Un breve RepasoEl proceso completo, para la creacion de objetos es el siguiente:Pri...
Ejemplo:public class Object {  public Object() { }}public class Employee extends Object {    private String name;    priva...
public class Manager extends Employee { private String department;    public Manager(String n, String d) {           super...
Los pasos siguientes es la secuencia que se realizo al construir          new Manager("Joe Smith","sales");-Inicializacion...
Certificación JAVA  Parte 4 Clases Abstractas y Excepciones
El metodo equals       public class My Date {                  private int day;                  private int month;       ...
equals   class TestEquals {    public static void main(String []args) {             MyDate date1 = new MyDate(14,3,1976); ...
equals -Continuación             System.out.println("set date2 = date1;");             date2=date1;             if(date1==...
Clases Wrapper             int pInt = 420;             Integer wInt = new Integer(pInt);             int p2=wInt.intValue(...
Inicializadores Estaticos     public class Count4 {               public static int counter;               static {       ...
Nuevo Tipo Enumerado          package cards.domain;          public enum Suit {                   SPADES,                 ...
Tipo Enumerado -Continuación           public String getSuitName() {                     String name="";                  ...
Tipo Enumerado – Avanzado          package cards.domain;          public enum Suit {                   SPADES ("Spades"), ...
Tipo Enumerado – Avanzadopackage cards.tests;import cards.domain.PlayingCard;import cards.domain.Suit;public class TestPla...
Clases Abstractas        public class ShippingMain {         public static void main(String []args) {                  Com...
Clases Abstractas      public class FuelNeedsReport {       private Company company;          public FuelNeedsReport(Compa...
Clases Abstractaspublic class abstract class Vehicle {  public abstract double calcFuelEfficiency();  public abstract doub...
Exceptions  public class AddArguments {    public static void main(String []args) {            int sum=0;            for(i...
La Sentencia try-catchpublic class AddArguments2 {  public static void main(String [ ]args) {          try {            in...
Manejo de Excepcionespublic class AddArguments3 {  public static void main(String [ ]args) {          int sum=0;          ...
La Cláusula finallytry {          startFaucet();          waterLawn();} catch (BrokenPipeException e) {          logProble...
Sobreescritura de Métodos y Excepciones        public class TestA {                  public void MethodA() throws IOExcept...
Creando tus Propias Excepciones      public class ServerTimedOutException extends Exception {       private int port;     ...
Lanzando Excepciones Definidas por el usuario       public void connectMe(String serverName)                throws ServerT...
Manejo de Excepciones definidas por el usuario    public void findServer() {      try {               connectMe(defaultSer...
Certificación JAVA      Parte 5 Hilos (Threads)
Creación de un Hilo         public class ThreadTester {           public static void main(String args[]) {                ...
Ciclo de vida de un Hilo
Deteniendo un hilo        class Runner implements Runnable {         private boolean timeToQuit=false;         public void...
Deteniendo un hilo -Continuacion          public class threadController {           private Runner r=new Runner();        ...
Referencia a si mismo  public class NameRunner implements Runnable {  public void run() {          while( true ) {        ...
Otras formas de implementar Hilos          public class MyThread extends Thread {              public void run() {        ...
Un Ejemplo Completo – Productor Consumidor            public class Producer implements Runnable {             private Sync...
Consumidor             public class Consumer implements Runnable {              private SyncStack theStack;              p...
El stack           import java.util.*           public class SyncStack {            private List<Character> buffer=new Arr...
Prueba         public class SyncTest {         public static void main(String args[]) {                    SyncStack stack...
Upcoming SlideShare
Loading in...5
×

Java certificacion

413

Published on

Java Certification UASLP

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
413
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java certificacion

  1. 1. El lenguaje de programación JAVA Dr. Hector G. Perez Gonzalez M.C. Froylan Eloy Hernandez Castro
  2. 2. The green project *7 Oak Java
  3. 3. Java
  4. 4. Java
  5. 5. J2Eava
  6. 6. Presentacion Presentacion Negocio Base de Cliente Servidor servidor Datos Empresa Java
  7. 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. 8. El lenguaje de programación JAVAParte 0 Diseño Orientado a Objetos
  9. 9. II. Breve Tour por UMLDiagrama 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. 10. II. Breve Tour por UMLEjemplos (Clase y Visibilidad)
  11. 11. II. Breve Tour por UML… Ejemplos (Asociación) dirige director Departamento Profesor 0..1 1
  12. 12. II. Breve Tour por UML… Ejemplos (Clase Asociación) empleador trabajadores Empresa Empleado * 1..* Cargo superior nombre sueldo 0..1 subordinado 1..*
  13. 13. II. Breve Tour por UML… Ejemplos (Generalización) Trabajador { disjunta, completa } Directivo Administrativo Obrero
  14. 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. 15. El lenguaje de programación JAVA Parte 1 Fundamentos
  16. 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. 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. 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. 19. Accediendo a Miembros del objeto Ejemplo: public class TestDog { public static void main(String[ ] args) { Dog d = new Dog(); system.out.println("Dog ds weight is: "+ d.getWeight()); d.setWeight(42); system.out.println("Dog ds weight is: "+ d.getWeight()); d.setWeight(-42); system.out.println("Dog ds weight is: "+ d.getWeight()); } } Salida: Dog ds weight is 0 Dog ds weight is 42 Dog ds weight is -42
  20. 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. 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. 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. 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. 24. Certificación JAVAParte 2 Tipos de Datos y Paso de Parámetros
  25. 25. 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
  26. 26. Palabras Clave en JAVAabstract continue for new switchassert default goto package synchronizedboolean do if private thisbreak double implements protected throwbyte else import public throwscase enum instanceof return transientcatch extends int short trychar final interface static voidclass finally long strictfp volatileconst float native super while
  27. 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. 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. 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.
  30. 30. Datos Básicos en JAVA
  31. 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. 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. 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. 34. Ejemplos public class ShirtTest { public static void main(String args[]) { Shirt myShirt; myShirt = new Shirt(); myShirt.displayShirtInformation(); } }
  35. 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. 36. Variable y Objeto son Referenciados
  37. 37. Variable y Objeto son Referenciados
  38. 38. Mas Ejemplospublic 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. 39. VariosOperador instanceofEl operador instanceof permite saber si un objeto pertenece a unadeterminada 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 suvalor a lo largo de la ejecución del programa. Puede ser considerada comouna constante, y equivale a la palabra const de C/C++.
  40. 40. Permiso de Acceso en JAVA
  41. 41. Certificación JAVA Parte 3 Clases, Métodos y Atributos
  42. 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. 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. 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. 45. EstaticosDeclarando 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. 46. EstaticosDeclarando 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. 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. 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. 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. 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. 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. 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. 53. 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;}
  54. 54. Creando Arreglos de ReferenciasSe pueden crear arreglos de Objetos p=new Point[10];Se crea un arreglo de 10 referencias de tipo Point,Sin embargono se crean 10 objetos de tipo Point, Se tienen que crear porseparado.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. 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. 56. Arreglos MultidimensionalesEl manejo de arreglosMultidimensionales en JAVA es muy Particular,ya que son arreglos de arreglos, por ejemplo arreglos dedos 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. 57. Limites del ArregloEl 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]); } }
  58. 58. Version Mejorada del for para ArreglosEjemplo: 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. 59. Modificando el Tamaño del ArregloDespues 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
  60. 60. Copiando ArreglosJAVA 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,1Nota: Este método solo copia referencias, no objetos.
  61. 61. Construyendo e Inicializando Objetos - Un breve RepasoEl 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 constructor2.-Si existe un this(), llamar recursivamente, y luego saltar al paso 53.-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 explicitos5.-Ejecutar el cuerpo del Constructor
  62. 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. 63. public class Manager extends Employee { private String department; public Manager(String n, String d) { super(n); department = d; }}
  64. 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. 65. Certificación JAVA Parte 4 Clases Abstractas y Excepciones
  66. 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. 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. 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. 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. 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. 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. 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. 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. 74. Tipo Enumerado – Avanzadopackage 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. 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. 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. 77. Clases Abstractaspublic class abstract class Vehicle { public abstract double calcFuelEfficiency(); public abstract double calcTripDistance();}
  78. 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 delprograma no son enteros.
  79. 79. La Sentencia try-catchpublic 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. 80. Manejo de Excepcionespublic 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. 81. La Cláusula finallytry { startFaucet(); waterLawn();} catch (BrokenPipeException e) { logProblem(e);} finally { stopFaucet();}
  82. 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. 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. 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. 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. 86. Certificación JAVA Parte 5 Hilos (Threads)
  87. 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. 88. Ciclo de vida de un Hilo
  89. 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. 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. 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. 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. 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. 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. 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. 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(); } }
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×