+ All Categories
Home > Education > Section1 scjp6.0

Section1 scjp6.0

Date post: 06-Jun-2015
Category:
Upload: daniel-martinez
View: 52 times
Download: 3 times
Share this document with a friend
Description:
Java
Popular Tags:
40
PCG SG Campus Sun Certified Java Programmer 6.0 [email protected] Sun Educación
Transcript
Page 1: Section1 scjp6.0

PCG SG CampusSun Certified Java Programmer [email protected]

Sun Educación

Page 2: Section1 scjp6.0

Section 1: Declarations, initialization and Scoping

Page 3: Section1 scjp6.0

3

SCJP: Section 1 Section 1: Declarations, Initialization and Scoping

Develop code that declares classes (including abstract and all forms of nested classes), interfaces, and enums, and includes the appropriate use of package and import statements (including static imports).

Develop code that declares an interface. Develop code that implements or extends one or more interfaces. Develop code that declares an abstract class. Develop code that extends an abstract class.

Develop code that declares, initializes, and uses primitives, arrays, enums, and objects as static, instance, and local variables. Also, use legal identifiers for variable names.

Page 4: Section1 scjp6.0

4

SCJP: Section 1 Section 1: Declarations, Initialization and Scoping  (Continuación)

Develop code that declares both static and non­static methods, and ­ if appropriate ­ use method names that adhere to the JavaBeans naming standards. Also develop code that declares and uses a variable­length argument list.

Given a code example, determine if a method is correctly overriding or overloading another method, and identify legal return values (including covariant returns), for the method.

Given a set of classes and superclasses, develop constructors for one or more of the classes. Given a class declaration, determine if a default constructor will be created, and if so, determine the behavior of that constructor. Given a nested or non­nested class listing, write code to instantiate the class.

Page 5: Section1 scjp6.0

5

Modificadores en JavaEjercicio en grupo

Modifiers Top Class Inner Class Interface Top Enum Method Constructorprivatedefaultprotectedpublicstaticfinalabstracttransientvolatile

Instance Enum

Instance Variable

Local Variable

Page 6: Section1 scjp6.0

6

Modificadores en JavaSolución ejercicio en grupo

Modifiers Top Class Inner Class Interface Method Constructorprivate NO SI NO NO SI SI SI SI NOdefault SI SI SI SI SI SI SI SI NOprotected NO SI NO NO SI SI SI SI NOpublic SI SI SI SI SI SI SI SI NOstatic NO SI NO NO SI SI NO SI NOfinal SI SI NO NO NO SI NO SI SIabstract SI SI SI NO NO SI NO NO NOtransient NO NO NO NO NO NO NO SI NOvolatile NO NO NO NO NO NO NO SI NO

Top Enums

Instance Enum

Instance Variable

Local Variable

Page 7: Section1 scjp6.0

7

Declaración y control de accesoModificadores y declaración de clases.

Reglas básicas

Solo puede existir una clase “public” por archivo fuente.

El nombre del archivo deberá de coincidir con el nombre de la clase publica.

La sentencia “package” (si la hay) deberá colocarse en la primera línea.

Si existen instrucciones “import” estas deberán de situarse entre la instrucción “package” y la declaración de clase.

Page 8: Section1 scjp6.0

8

Sintaxis en ClasesRegla:

[ access modifier ] [modifier ]* class NameClass{

}

Ejemplos:

public abstract class Person{}

strictfp abstract class TaxesType{}

public class Vehicle{}

class public WrongExample{}        //Error de Compilación

Page 9: Section1 scjp6.0

9

Sintaxis VariablesVariables de Instancia:

[ access modifier ] [modifier ]*  type nameVariable [ = value] ;

Ejemplos:

public class Person{

String firstName ;

int age = 0;

public static final int idPerson;

//...

}

Page 10: Section1 scjp6.0

10

Sintaxis VariablesVariables Locales:

[modifier final] type nameVariable [ = value];

Ejemplos:

public void method(){

int a = 10;

final double interestRate = 0.05 ;

private int  c = 100;          //Error de Compilación

}

Page 11: Section1 scjp6.0

11

Sintaxis MétodosMétodos

[access modifier] [modifier]*  returnType 

            nameMethod( [ arguments]*){  }

Ejemplos:

public void methodA(int a, float f){      }

public final  int methodB(){ return 100;}

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

public native void methodC();

public abstract void methodD();

Page 12: Section1 scjp6.0

12

Métodos static  El modificador static es utilizado en declaración de:  variables, 

métodos, nested classes, y nested enum. Los miembros declarados con el modificador static existen para toda la clase, es decir NO se asocian  a ninguna instancia / objeto en particular.

  No necesario crear instancias para accesar miembros static. 

Accesados por medio del nombre de la clase.

public class CasaGeo{

private static int noHabitaciones=1;

}

En otro código podemos usar:

   System.out.println(CasaGeo.noHabitaciones);

  Los Métodos static, solo pueden accesar a  variables locales y variables static de la clase que lo define.

Page 13: Section1 scjp6.0

13

Identificadores Válidos

Identificador: 

Nombre asignado a una variable, clase o método.

Reglas:

Caracter inicial: Letras, '_', '$'.

Subsecuentes caracteres pueden ser dígitos.

Sensibles a mayúsculas

No hay máximo en longitud

No utilizar palabras reservadas como identificadores.

Page 14: Section1 scjp6.0

14

Java BeansComponentes de sw reusables que pueden ser manejados por una herramienta de desarrollo.

Convención:

La clase debe ser serializable.

Constructor sin argumentos.

Propiedades accesibles por medio de los métodos:

getX()

setX()

isX().­ Utilizado para valores booleano.

Page 15: Section1 scjp6.0

15

Sintaxis ConstructoresConstructores

[access modifier] NameClass ( [ arguments]*){  }

Ejemplos:

public class Account{

private double balance ;

public Account (){  }

protected Account(double pBalance){

balance = pBalance;

}

}

Page 16: Section1 scjp6.0

16

Constructor por defaultEn todas las clases SIEMPRE existe al menos un constructor

Si el programador no define un constructor, automáticamente  Java genera un constructor  por default 

El constructor default tiene:

Mismo modificador de acceso que la clase

No define argumentos

Esta vacío

Page 17: Section1 scjp6.0

17

Ejemplo de constructor DefaultCódigo con constructor Default

import java.util.*;

public class Customer{

private String firstName;

private String lastName;

List accounts;

}

public class TestCustomer{

public static void main(String args[]){

Customer obj = new Customer();}

}

Page 18: Section1 scjp6.0

18

Estructura PackageSe utiliza para agrupar un conjunto de clases

Hace referencia de manera lógica a un directorio físico en el disco duro

Solamente puede existir una y solo una declaración de package por archivo .java

Si existe la declaración, debe ser la primer línea en el archivo, si se omite se usa el package default

Page 19: Section1 scjp6.0

19

Estructura ImportPermite indicar la ruta de paquetes en donde se encontraran las clases a utilizar

Puede utilizarse de dos maneras:

import packageNameA.pckageNameN.*;

o bien:

import packageNameA.packageNameN.NameClass;

Es utilizando a través del Dynamic Class Loader

Page 20: Section1 scjp6.0

20

Estructura de ClasesEjemplo de Clase Java

//Customer.java

package com.ses.scjp.domain;

import java.util.*;

import java.util.Locale;

public class Customer{

private String firstName ;

private String lastName;

List accounts;

//...

}

Page 21: Section1 scjp6.0

21

Statics ImportCaracterística de Java, agregada a la versión 1.5

Se utiliza para  importar miembros estáticos

Útil para referencia miembros estáticos de clase, sin necesidad de utilizar su nombre completamente calificado

Solo  importa los miembros estáticos de una clase

Si se usa debe usarse adicionalmente el import no­static

Su sintaxis es:

import static package.subPackage.NameClase.*;  

o bién:

import static package.subPackage.NameClase.memberStatic;

Page 22: Section1 scjp6.0

22

Ejemplo de Static ImportCódigo Java 1.6

import static java.lang.System.*;

import static java.lang.Math.*;

public class TestStaticImport{

    public static void main(String args[]){

        out.println("Numero aleatorio:" + random());

    }

}

Page 23: Section1 scjp6.0

23

Clases AbstractasNO se puede crear  instancias de clases abstractas

Pueden declarar 1 ó N métodos abstractos

Pueden declarar atributos y métodos concretos

Los constructores son permitidos pero no se pueden invocar directamente, es decir, se invocan desde los constructores de sus subclases.

Page 24: Section1 scjp6.0

24

Ejemplo de Clase Abstractapublic abstract class Figura{

protected double area;

protected abstract void calculaArea();}

public class Circulo extends Figura{

protected void calculaArea(){          System.out.println(“ PI * R2”);

}}

Page 25: Section1 scjp6.0

25

InterfacesPermite emular la herencia múltiple.

Solamente definen métodos abstractos y variables: 

public static final type nameVarible = value;

No se permiten los constructores

Una Java interface  puede extender a otras interfaces

Una clase puede implementar a 1 ó N interfaces

Page 26: Section1 scjp6.0

26

Ejemplo de InterfaceCódigo con Java Interface

public interface Flyer{

public void land();

public void takeOff();

public void fly();

}

public class Aircraft implements Flyer{

public void land(){  }

public void takeOff(){  }

public void fly(){ }

}

Page 27: Section1 scjp6.0

27

Ejemplo de InterfaceContinuación (1)...

public class Helicopter implements Flyer{

public void land(){  }

public void takeOff(){  }

public void fly(){ }

}

public class Bird extends Animal implements Flyer{

public void land(){  }

public void takeOff(){  }

public void fly(){ }

Page 28: Section1 scjp6.0

28

Ejemplo de InterfaceContinuación (2)...

public class ClassA extends SuperClassA implements 

InterfaceA, InterfaceB{

}

public interface Remote{ }

public interface RemoteHandler  extends Remote{

}

Page 29: Section1 scjp6.0

29

Nested ClasesClases declaradas dentro de la encapsulación de otra clase

Existen 3 tipos básicos de clases Nested

Clases Nested  declaradas como variable de instancia

Clases Nested Locales declaradas dentro de un Método

Clases Nested Anónimas

Page 30: Section1 scjp6.0

30

Nested Clases Variable InstanciaLas clases Nested declaradas como variable de instancia, pueden tener cualquier modificador de acceso

Pueden utilizar las variables de instancia definidas en la clase wrapper

Fuera de la encapsulación de la clase externa, es posible crear instancias de una clase Nested, pero requiere una sintaxis especial.

Page 31: Section1 scjp6.0

31

Ejemplo Clase Nested InstanciaCódigo de Nested Class declarada como variable de instancia

public class OuterClass{

private int a = 10;protected class NestedClass{

public void metodo(){     System.out.println(“El valor de a=” + a);

}}

}

Page 32: Section1 scjp6.0

32

Ejemplo Clase Nested InstanciaCódigo continuación...

public class TestNested{

public static void main(String args[]){

    OuterClass outer = new OuterClass();                 OuterClass.NestedClass nested = outer.new 

NestedClass();

    nested.method();                                         

    }

   }

Page 33: Section1 scjp6.0

33

Clases Nested LocalesDeclaradas dentro de un método

No pueden tener ningún modificador de acceso

Sólo pueden ser instanciadas dentro de la encapsulación del método

Si utilizan variables del método wrapper, éstas deben ser declaradas como final

Page 34: Section1 scjp6.0

34

Ejemplo clase Nested LocalCódigo Clase Nested Local

public class TestNestdLocal{  

    public static void main(String args[]){

               final int a = 110; 

               class NestedClass{                    

                    public void method(){                         

                         System.out.println("El valor de a=" + a);

                    }

                }                              NestedClass nested = new NestedClass();

               nested.method();

    }           }

Page 35: Section1 scjp6.0

35

Clases Nested AnónimasDeclaradas al momento de invocar el constructor 

No se define un nombre para la clase Nested, solamente se define el cuerpo de la clase seguido del constructor

No se puede reutilizar el código de una clase anónima, para crear múltiples instancias de la clase nested anónima

Page 36: Section1 scjp6.0

36

Ejemplo Clase Nested AnónimaCódigo Clase Nested Anónima

public class Main{    

    static Object obj = new Object(){

        public String toString(){

               return "Ejemplo de Clase Nested Anonima...";       

        }

    };    

    public static void main(String args[]){      

        System.out.println(obj.toString());                

    }           

}

Page 37: Section1 scjp6.0

37

Java EnumerationsCaracterística de Java, agregada a la versión 1.5

Permite definir conjuntos de elementos de manera type­safe

Pueden ser usadas para hacer referencia a conjuntos de elementos finitos 

Pueden contener métodos

Pueden ser usadas como argumentos en estructuras de control switch

Page 38: Section1 scjp6.0

38

Java EnumerationsContinuación...

No se pueden instanciar

Si son públicas deben se declaradas en un archivo con el mismo nombre que la enum

No se permiten enums Locales a métodos

Page 39: Section1 scjp6.0

39

Ejemplo de EnumerationsCódigo que muestra una Enumeration

public class TestEnums{

        enum Week{

        MONDAY, TUESDAY, WEDNESDAY, THURSDAY,

        FRIDAY, SATURDAY, SUNDAY

    }

    public static void main(String args[]){      

        Week today = Week.FRIDAY;

        System.out.println("Hoy es:" + today);                

    }           

}

Page 40: Section1 scjp6.0

40

Fin de Sección 1:                  Declarations, Initialization and Scoping

● Notas


Recommended