domingo, 2 de noviembre de 2008

Implementacion de interfaces.

  • Las interfaces son contratos que te dicen que hacer, pero no te dicen nada acerca de como las clases deben de hacerlo

  • Las interfaces pueden ser implementadas por cualquier clase de cualquier arbol de herencia

  • Una interfas es como una clase 100% abstracta, es implicitamente abstracta aunque escribas explicitamente la palabra "abstract" o no

  • LAs interfaces solo pueden tener metodos abstractos, no son permitidos los metodos concretos

  • Las interfaces son por default public y abstract, no es necesario que escribamos los modificadores para que sea asi

  • LAs interfaces pueden tener constantes, las cuales son implicitamente public, final y static

  • Escribir las palabras public, static o abstract e las constantes de las interfaces es opcional y se pueden escribir en cualquier orden

  • La primera clase no abstracta que implemente legalmente a la interfaz debe de tener las siguentes caracteristicas:
    -->Provee una implementacion concreta para los metodos de la interface
    -->Debe de seguir todas las reglas para osbreescribir los metodos que implementa
    -->No debe de declarar ninguna otra "Checked exception" de un metodo implementado
    -->Puede declarar Runtime Exception(Errores en tiempo de ejecucion.
    -->Mantener la misma sintaxis, incluyendo argumentos y tipos de retorno.

  • Una clase implementado una interfaz puede ser en si misma abstracta

  • Una clase abstracta no tiene por que implementar los metodos de una interface(pero la primera subcalase concreta si)

  • Una clase puede extender solo una clase pero implementar varias interfaces

  • Una interface puede extender varias interfaces

  • Las interfaces no pueden extender clases ni implementar clases ni interfaces

  • En el examen debemos de verificar que las clases e interfaces esten bien usadas antes de verificar el codigo en si
  • Otros modificadores de clases .

  • Las clases solo pudente tener otros 3 tipos de acceso
    -->final
    -->strictfp
    -->abstract

  • Una clase no puede ser final y abstract al mismo tiempo

  • Una clase final no puede ser extendida

  • Una clase abstracta no puede ser instanciada

  • Si se tiene un solo metodo abstracto dentro de una clase, la clase completa debe de ser abstracta

  • Una clase abstracta puede tener tanto metodos abstractos como no abstractos

  • la primera clase concreta en extenbder una clase abstracta debe de implemetar todos los metodos abstractos
  • Modificadores de acceso de clases

  • Existen 3 modificadores de acceso
    -->public
    -->private
    -->protected


  • Existen 4 tipos de niveles de acceso
    -->public
    -->private
    -->protected
    -->default


  • las clases solo pueden tener acceso publico o default

  • Una clase con un acceso default solo puede ser visto por las clases dentro del mismo paquete

  • Una clase con acceso public puede ser visto por cualquier clase en cualquier paquete

  • La visibilidad nos indica que la clase puede con respecto a la otra:
    -->Crear una instancia de otra clase
    -->Extender (ser una subclase) seotra clase
    -->Acceder a los metodos y variables de la otra clase
  • Reglas de declaracion.

  • Un archivo de codigo puede tener solo una clase publica

  • Si el archivo de codigo contiene una clase publica, debe esta debe de ser la misma que la de el archivo de codigo

  • Un archivo solo puede tener una sentencia "package" pero multiples "import"s

  • La sentencia del package debe de ir al principio del archivo

  • los imports deben de ir despues del package pero antes de la eclaracion de las clases

  • El package y los imports aplican para todas las clases del archivo

  • Los comentarios son de chocolate :D, pueden ir en cualquier parte

  • Un archivo puede tener mas de una clase no publica

  • Los archivos que no contienen ninguna clase publica se pueden llamar como quieran
  • Identificadores

  • Las variables deben de empezar con una letra, un signos de "$" o un "_" despues se pueden utilizar los mismos símbolos y números

  • Las clases y las interfaces deben empezar con Mayúscula

  • Los métodos y las variables deben de escribirse con "camelCase" (primero minúscula y después mayuscula al inicio de las demás palabras)

  • Las constantes deben de ser final y static y estar COMPLETAMENTE_EN_MAYUSCULAS
  • viernes, 3 de octubre de 2008

    Miembros de las clases(Metodos y variables de instancia)

    Accesos default y protected
    El acceso default y protected sólo se diferencian cuando hablamos de subclases, hay qué pensar en el aceso default como un acceso a nivel de paquetes es decir cuando intantamos accesar a un miembro qué es protected sólo podemos hacerlo si estadentro del mismo paquete a(y lo unstanciamos. Correctamente) si intantamos entrar desde una clase fuera del paquete nos va a mandar un error de compilación dicendonos que el miembro no existe
    Por que de hecho no es siquera visible fuera del paquete, cuando intentamos acceder fuera de este nos manda una espantosa X.
    Ahora cuando hablamos de protected las reglas del juego cambian como en el big brother com protected si podemos acceder fuera del paquete pero solo por medio de herencia es decir solo los hijos de la clase pueden acceder pero no por medio de una instancia sino llamando al método directamente o lo que es lo mismo usado el operador this, si queremos instanciarlo nos va a mandar far... Far away
    VARIABLES LOCALES
    No esxiste ningún modificador de acceso que pueda usarse con las variables locales, el único modificador que permiten las variables locales es el final.
    OTROS MODIFICADORES PARA MIEMBROS
    Existen varios modificadores para miembros como son final abstract strictfp volatile transient sinchronized static y native primrero veremos laos que se aplican a loa métodos
    METODOS FINAL
    Los métodos final no pueden ser sobreeacritos, bistros podemos usarlos pero si tratamos de sobreescribirlos nos manda un error de xompilacion esto se hace cuando queremos asegurarnis que nadiie pueda cmbiar el comportamiento de nuestros metodos
    ARGUMENTOS FINAL
    UN argumento es prácticamente lo mismo que una variable local, cuando declaramos un argumeto como final nos aseguramos de que los valores que les pasemos a esos mtods no pueden ser cambiados.(o el objeto al que refiere en u caso)
    MÉTODOS ABSTRACTOS
    Un metodo abstract termina con punto y coma y no puede se definido en la clase en las que es declarada, ose no ponemos una implementación del método sólo ponemos los modificadores de acceso el nombre del método y los argumentos , pero nunca lo implementamos,.
    Un metodo abstracto debe de estar dentro de una clase abstracta, sin embargo piedra esxistir métodos comcretos dentro de una clase abstracta, va de nuevo , si un simple método es declarado abstracto la clase estera deber de ser abstracta, si no nos manda un error de compilación , sin embargo pueden existir clases abstractas con sólo métodos concretos.
    La primera clase concreta que extienda a una clase abstracta debe implementar los métodos abstractos de está y de todas sus superclases.
    El modificador abstract no lo podemos mezclar con final ni private, simplemete por que no tendríamos forma de implementarla, tampoco puede ser static.
    SYNCRONIZED
    un método sincronizado sólo puede accederse por un hilo a la vez, al acceso sinchronized sólo aplica a métodos y nada más.

    Clases

    Existen dos modificadores para las clases public y default sólo puede haber una clase pública por cada archivo de código y debe tener el mismo nombre que el archivo puede haber las clases privadas que sean, y si no existe una clase pública el archivo puede tener cualquier orden
    Otros modificadores aparte de public y default una clase puede tener otros 3 tipos de modificadores estos son final,abstract y strictfp
    Los modificadores strictfp y abstract se pueden usar juntos pero nunca podemos usar final y abstract
    El modificador strictfp sólo se puede usar con clases y metodos pero nunca con variables
    FINAL
    Una clase que es final no puede ser una subclase es decir ninguna otra clase la puede extender
    ABSTRACT
    Una clase abstracta no puede ser instanciada, su único propósito en l vida es ser extendida, es decir no podemos crear un objeti con está clase pero podemos utilizarla para crear otras clases que si pueden ser instanciadas, una clase abstracta no termina con llaves ,termina con punto y coma , no se puede marcar una clase abstracta y final por qué tienen significados opuestos
    INTERFACES
    Las interfaces son como cases 100% abstractas, es decir en ellas solo se pueden declarar metodos abtractos , las interfaces son abstractas le pongamos ese modificador o no, las interfaces pueden ser públicas o default , pero los metodos dedntro de las interfaces son implictsmente public y abstract , las interfaces no pueden ser static y al ser abstractas tampoco pueden ser final las interfaces no pueden extender ni implementar ninguna clase , pero tampoco pueden implmentar interfaces, sólo extienden interfaces, y puede estender las interfaces que quiera, ninguna, una o varias
    Las variables de las interfaces son implícitamente public, static y final lo escribamos así o no.
    MIEMBROS DE LA CLASE
    Los métodos y las variables de instancia son llamados miembros, los miembros pueden tomar todos los modificadores de acceso el public, private, default y protected
    Existen dos firmas de acceder a un método de un clase, el primero es usado el operador "." esto es instanciando la clase y utilizar el operador punto para accesar a un método o a alguna variable local.
    La segunda forma es por medio de la herencia, cuando extendéis otra clase estamos tomando todos sus métodos y variables de instancia y estamos haciendolos nuestros, por eso no ncesiramos nada para usarlos, simplemente los llamamos con su nombre.
    PUBLIC
    Cuando un miembro es public, puede ser accesado desde cualquier lado siempre y cuando clase pueda ser accesada, es decir si podemos ver l clase podemos ver cualquier método público, cuando extendemos una clase. Toda los miembros públicos son heredados sin importar el paquete en que se encuentren
    PRIVATE
    Un miembro privado no puede ser visto en ningún lugar fuera de la clase en donde es declarado, ni siquiera por herencia , es decir su una clase es privada unicamente puede ser vista por la mismo clase, si tratamos de accesarlo desde otra clase nos manda un error de compilación, podemos declarar otro metido con el mismo nombre en una subclase, pero no estamos sobrescribiendo nada, sólo es otro método.
    .