Acoplamiento se refiere a el grado en que una clase conoce datos acerca de los miembros de otra clase.
Un bajo acomplamieto es deseable, puesto que las otras clases solo deben de saber cosas que realmente le interezan y los datos deben estar encapsulados.
Cohesion se refiere al hecho de que las clases haces una funcion especifica.
El hecho de que las clases hagan una sola y simple funcion aumenta la mantenibilidad del codigo.
martes, 25 de noviembre de 2008
Static
Los metodos estaticos(Static) se usan cuando queremos hacer cosas que no afectan el funcionamiento de ninguna instancia en especifico.
Las clases estaticas se usan para guardar valores que pertenecen a la clase, no a una instancia en especifico.
Todos los metodos estaticos pertenecen a las clases, no a las isntancias.
Un metodo estatico no puede acceder a una variable de instancia directamente.
Se puede acceder a una miembro estatico utilizando el nombre de la clase( Class.Metodo()), pero recuerda que acceder a una variale de estatica utilizando una instancia es una trampa, en realidad la variable sigue sin pertenecer a la instancia sino a la clase.
Los metodos estaticos no pueden ser sobreescritos, pero pueden ser redefinidos.
Las clases estaticas se usan para guardar valores que pertenecen a la clase, no a una instancia en especifico.
Todos los metodos estaticos pertenecen a las clases, no a las isntancias.
Un metodo estatico no puede acceder a una variable de instancia directamente.
Se puede acceder a una miembro estatico utilizando el nombre de la clase( Class.Metodo()), pero recuerda que acceder a una variale de estatica utilizando una instancia es una trampa, en realidad la variable sigue sin pertenecer a la instancia sino a la clase.
Los metodos estaticos no pueden ser sobreescritos, pero pueden ser redefinidos.
Constructores e instansacion
Un costructor siempre es invocado cuando un objeto es creado.
Cada una de las superclases en un arbol de herencia tiene a un constructor llamado.
Todas las clases, incluso las clases abstractas tienen por lo meos un constructor.
Los constructores deben tener el mismo nombre de la clase.
Los constructores no tienen tipo alguno de retorno, si ves a un "cosntructor" con un tipo de retorno, no es un constructor es un metodo.
LA forma en que funcionan los contructores es la siguente:
-->Un cosntructor llama al costructor de su clase padre, este a su vez llama al costructor de su clase padre y asi sucesivamente.
-->El super super super (el ultimo padre) costructor se executa, luego continua el que lo halla llamado y asi sucesivamente.
Los constructores pueden usar cualquier modificador de acceso(incluso privado)
El compilador te crea un cosntructor por default si tu no creas ningun constructor explicitamente.
El constructor que se crea por default es un cosntructos sin argumentos, con una llamada a super();
La primera sentencia de un cosntructor debe de ser o this() (un constructor sobrecargado) o super().
Solo podemos acceder a los miembros de instancia luego de que el constructor se halla executado.
Las clases abstractas tienen constructores que son llamados cuando la primer subclase concreta los llama.
Las interfaces no tienen constructores.
Los constructores nunca son heredados, por los tanto no pueden ser sobreescritos.
Si una superclase no tiene un constructor sin argumentos entonces tenemos que poner un llamado a super() con argumentos a webos.
Un constructor solo puede ser llamado dentro de otro costructor usando las palabras this() o super().
Cosas que debemos hacer para llamar correctamente a this()
-->Deben aparecer solo en la primera sentencia del constructor.
-->La lista de argumentos nos dice cual constructor sobrecargado es llamado.
-->Constructores pueden llamar a constructores, que pueden llamar a cosntructores ya asi hasta que se te de la gana, pero al final alguno de ellos tiene que hacer un llamado al super() o el Universo Java como lo conocemos implocionaria(ok, solo se acaban los recursos de tu compu y se bloqueria(tal vez eso es peor :P))
-->llamados a this() y super() no pueden ir en el mismo constructor, puede poner cualquiera de los dos, pero no los dos al mismo tiempo.
-->
Cada una de las superclases en un arbol de herencia tiene a un constructor llamado.
Todas las clases, incluso las clases abstractas tienen por lo meos un constructor.
Los constructores deben tener el mismo nombre de la clase.
Los constructores no tienen tipo alguno de retorno, si ves a un "cosntructor" con un tipo de retorno, no es un constructor es un metodo.
LA forma en que funcionan los contructores es la siguente:
-->Un cosntructor llama al costructor de su clase padre, este a su vez llama al costructor de su clase padre y asi sucesivamente.
-->El super super super (el ultimo padre) costructor se executa, luego continua el que lo halla llamado y asi sucesivamente.
Los constructores pueden usar cualquier modificador de acceso(incluso privado)
El compilador te crea un cosntructor por default si tu no creas ningun constructor explicitamente.
El constructor que se crea por default es un cosntructos sin argumentos, con una llamada a super();
La primera sentencia de un cosntructor debe de ser o this() (un constructor sobrecargado) o super().
Solo podemos acceder a los miembros de instancia luego de que el constructor se halla executado.
Las clases abstractas tienen constructores que son llamados cuando la primer subclase concreta los llama.
Las interfaces no tienen constructores.
Los constructores nunca son heredados, por los tanto no pueden ser sobreescritos.
Si una superclase no tiene un constructor sin argumentos entonces tenemos que poner un llamado a super() con argumentos a webos.
Un constructor solo puede ser llamado dentro de otro costructor usando las palabras this() o super().
Cosas que debemos hacer para llamar correctamente a this()
-->Deben aparecer solo en la primera sentencia del constructor.
-->La lista de argumentos nos dice cual constructor sobrecargado es llamado.
-->Constructores pueden llamar a constructores, que pueden llamar a cosntructores ya asi hasta que se te de la gana, pero al final alguno de ellos tiene que hacer un llamado al super() o el Universo Java como lo conocemos implocionaria(ok, solo se acaban los recursos de tu compu y se bloqueria(tal vez eso es peor :P))
-->llamados a this() y super() no pueden ir en el mismo constructor, puede poner cualquiera de los dos, pero no los dos al mismo tiempo.
-->
martes, 18 de noviembre de 2008
Tipos de retorno
Los metodos sobrecargados pueden cambiar su tipo de retorno, los metodos sobreescritos no pueden exceptuando los retornos covariantes(Hijos del tipo de retorno original)
Los metodos que retornen un objeto, pueden retornar tambien null, si lo desean
Array es un tipo de retorno valido.
Para metodos con tipos de retorno primitivos, cualquier cosa que se pueda convertir implicitamente el tipo de retorno deseado es valido.
Nada puede ser rettornado en un tipo de retorno void, pero pueder regresar nada, es decir puesdes escribir return; sollito.
Los metodos que retornen una referencia a un objeto pueden retornar un subtipo.
Metodos que retoenen una interfaz, pueden retornar cualquier implementacion de esta.
Los metodos que retornen un objeto, pueden retornar tambien null, si lo desean
Array es un tipo de retorno valido.
Para metodos con tipos de retorno primitivos, cualquier cosa que se pueda convertir implicitamente el tipo de retorno deseado es valido.
Nada puede ser rettornado en un tipo de retorno void, pero pueder regresar nada, es decir puesdes escribir return; sollito.
Los metodos que retornen una referencia a un objeto pueden retornar un subtipo.
Metodos que retoenen una interfaz, pueden retornar cualquier implementacion de esta.
miércoles, 12 de noviembre de 2008
Implemento de interfaces
Implementar una interface.
Cuando implementas una interface, estas firmando un contrato.
Implementas una interface al sobreescribirla propia y correctamente en todos los metodos que son definidos por la interface.
Una sola clase puede implementar multiples interfaces
Cuando implementas una interface, estas firmando un contrato.
Implementas una interface al sobreescribirla propia y correctamente en todos los metodos que son definidos por la interface.
Una sola clase puede implementar multiples interfaces
Casting
Casting para variables de referencia
Hay dos tipos de casting para variable de referencia, el downcasting y el upCasting.
Downcating: Si se tiene una variable de reque refiera a un subtipo del objeto,puedes asignarlo a una variable de referencia del suptipo en especifico.Se debe de hacer un casting especifico para poder hacer esto y el resultado es que puede acceder al nuevo subtivo con la nueva ariable de referencia
Upcasting: Puedes asignar una variable de referencia a un supertipo de de otra variable de referencia ya sea de forma implicita o explicita. Esta es una operacion segura, por que la superclase contiene todas las cosas que tiene la subclase..
Hay dos tipos de casting para variable de referencia, el downcasting y el upCasting.
Downcating: Si se tiene una variable de reque refiera a un subtipo del objeto,puedes asignarlo a una variable de referencia del suptipo en especifico.Se debe de hacer un casting especifico para poder hacer esto y el resultado es que puede acceder al nuevo subtivo con la nueva ariable de referencia
Upcasting: Puedes asignar una variable de referencia a un supertipo de de otra variable de referencia ya sea de forma implicita o explicita. Esta es una operacion segura, por que la superclase contiene todas las cosas que tiene la subclase..
Metodos sobrecargados(Overloaded)
Un metodo sobrecargado significa que se va a reusar el nombre del metodo, pero con argumentos diferentes.
caracteristicas de los Metodos sobrecargados:
-->Deben de tener una lista de argumentos diferente.
-->Pueden tener diferentes tipos de retorno, si la lista de argumentos es tambien diferente.
-->Pueden tener diferentes modificadores de acceso.
-->Metodos de usa superclase pueden ser sobrecargados en una subclase.
El polimosfismo aplica a metodos sobreescritos, pero no a sobrecargados.
El tipo de referencia determina cual metodo sobre cargado va a ser llamado en tiempo de compilacion.
caracteristicas de los Metodos sobrecargados:
-->Deben de tener una lista de argumentos diferente.
-->Pueden tener diferentes tipos de retorno, si la lista de argumentos es tambien diferente.
-->Pueden tener diferentes modificadores de acceso.
-->Metodos de usa superclase pueden ser sobrecargados en una subclase.
El polimosfismo aplica a metodos sobreescritos, pero no a sobrecargados.
El tipo de referencia determina cual metodo sobre cargado va a ser llamado en tiempo de compilacion.
Metodos sobreescritos(Overriding)
Los metodos pueden ser sobreescritos o sobrecargados, los constructores pueden ser sobrecargados pero no sobreescritos.
Los metodos estaticos deben(obligatoriamente) ser sobreescritos por la primera clase concreta no abstracta.
Caracteristicas de los metodos sobreescritos:
-->Deben tener la misma lista de argumentos.
-->Deben tener el mismo tipo de retornos, excepto por que apartir de java 5 , el tipo de retorno puede ser una subclase,esto es conocido como retorno covariante.
-->No debe de tener un tipo de acceso mas restrictivo.
-->No bede de lanzar nuevas excepciones o excepcionnes que no sean las excepciones ya lansadas o sus sublcases.
-->Puede lanzar nuevas excepciones que sea subclases de las excepciones ya lanzadas o cualquier unchecked exception(excepciones en tiempo de ejecucion)
Los metodos finales no pueden ser sobreescritos.
Solo los metodos heredados pueden ser sobreescritos, y recuerda que los metodos privados no son sobreescritos.
una subclase una la sintaxis super.nombreDelMetodoSobreescrito() para llamar a la version de la superclase del metodo.
El tipo de objeto(no la variable de referencia), determina cual tipo de metodo sobreescrito es llamado en tiepo de ejecucion.
Los metodos estaticos deben(obligatoriamente) ser sobreescritos por la primera clase concreta no abstracta.
Caracteristicas de los metodos sobreescritos:
-->Deben tener la misma lista de argumentos.
-->Deben tener el mismo tipo de retornos, excepto por que apartir de java 5 , el tipo de retorno puede ser una subclase,esto es conocido como retorno covariante.
-->No debe de tener un tipo de acceso mas restrictivo.
-->No bede de lanzar nuevas excepciones o excepcionnes que no sean las excepciones ya lansadas o sus sublcases.
-->Puede lanzar nuevas excepciones que sea subclases de las excepciones ya lanzadas o cualquier unchecked exception(excepciones en tiempo de ejecucion)
Los metodos finales no pueden ser sobreescritos.
Solo los metodos heredados pueden ser sobreescritos, y recuerda que los metodos privados no son sobreescritos.
una subclase una la sintaxis super.nombreDelMetodoSobreescrito() para llamar a la version de la superclase del metodo.
El tipo de objeto(no la variable de referencia), determina cual tipo de metodo sobreescrito es llamado en tiepo de ejecucion.
Polimorfismo
Polimorfismo significa muchas formas.
Una refrencia a una variable, es siempre unica, nos se le puede cambiar el tipo, pero puede referir a un subtipo del objeto que declaro.
Un solo objeto puede ser referiado por muchas variables de referencia de muchos tipos diferente.. siempre y cuando sean del mismo tipo o supertipo del objeto.
La variable de referencia(no en objeto en si mismo), determina a que metodo se tiene que llamar.
En compilador solo sabe que variable de referencia se esta usando, pero al momento de que el objeto se ejecuta ya se sabe que objeto es.
LA invocacion polimorfica de los metodos aplica solo a metodos de instancia sobreescritos, no a variables estaticas ni a variables, solo a metodos que puedan llamarce a travez de una instancia.
Una refrencia a una variable, es siempre unica, nos se le puede cambiar el tipo, pero puede referir a un subtipo del objeto que declaro.
Un solo objeto puede ser referiado por muchas variables de referencia de muchos tipos diferente.. siempre y cuando sean del mismo tipo o supertipo del objeto.
La variable de referencia(no en objeto en si mismo), determina a que metodo se tiene que llamar.
En compilador solo sabe que variable de referencia se esta usando, pero al momento de que el objeto se ejecuta ya se sabe que objeto es.
LA invocacion polimorfica de los metodos aplica solo a metodos de instancia sobreescritos, no a variables estaticas ni a variables, solo a metodos que puedan llamarce a travez de una instancia.
Herencia
Las herencia permite a una clase ser una subcalse de una superclase, y por lo tanto heredar las variables public y protected y los metodos de la superclase
Herencia es el concepto principal para entender IS-A, polimorfismo, sobreescritura, sobrecargado, y casting.
Herencia es el concepto principal para entender IS-A, polimorfismo, sobreescritura, sobrecargado, y casting.
Encapsulacion IS-A HAS-A
LA encapsulacion ayuda a esconder la implementacion detras de una interface
El codigo encapsulado tiene dos caracteristicas:
Las variables de instancia se mantienen protegidas
Los metodos getter y setter proveen acceso a las variables de instancia.
IS-A se refuere a herencia o iplementacion
IS-A se expresa con la palabra reservada extends.
IS-A "hereda de" y "es un subtipo de" significan lo mismo.
HAS-A significa que una instancia de una clase "tiene una(HAS-A)" referencia a una instancia de otra clase u otra instancia de la misma clase.
El codigo encapsulado tiene dos caracteristicas:
Las variables de instancia se mantienen protegidas
Los metodos getter y setter proveen acceso a las variables de instancia.
IS-A se refuere a herencia o iplementacion
IS-A se expresa con la palabra reservada extends.
IS-A "hereda de" y "es un subtipo de" significan lo mismo.
HAS-A significa que una instancia de una clase "tiene una(HAS-A)" referencia a una instancia de otra clase u otra instancia de la misma clase.
domingo, 2 de noviembre de 2008
Enumeradores(enums)
--> enum Numeros{UNO,DOS,TRES} o
--> enum Numeros{UNO,DOS,TRES}
Variables y metodos estaticos
Declaracion de arreglos
Declaracion de variables
-->Tener cualquier tipo de control de acceso
-->Ser transient , final o volatile
-->No pueden ser reinicializadas una ves que se les asigna un valor
-->No pueden referir a otro objeto una ves que han sido asignadas a un objeto
-->Las variables de referencia fginal deben de ser inicializadas antes de que el contructor se complete
Metodos con var-args
Otros modificadores para miembros
-->El metodo no esta marcado como abstracto
-->El metodo tiene llaves "{}"
-->El metodo tiene codigo entre las llaves
-->Los metodos abstractos no pueden ser private
-->los metodos abstractos no pueden ser final
Variable Locales
Modificadores de acceso de miembros
-->Codigo en una clase puede aceder por medio de una instancia al codigo de otra clase.
-->El codigo de una clase puede acceder al codigo de otra mediante herencia
-->Los miembros default solo pueden ser accedidos por clases del mismo paquete
-->Los miembros protected pueden ser accedidos por clases del mismo paquete y por medio de herencia por miembros de otras clases no importando en que paquete esten
-->protected = paquete + hijos (subclases)
-->Fuera del paquete un miembro protected SOLO puede ser accedido por medio de herencia y una ves que se eredan los miembros se vuelven privados para todas las demas clases
-->
Implementacion de interfaces.
-->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.
Otros modificadores de clases .
-->final
-->strictfp
-->abstract
Modificadores de acceso de clases
-->public
-->private
-->protected
Existen 4 tipos de niveles de acceso
-->public
-->private
-->protected
-->default
las clases solo pueden tener acceso publico o default
-->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.
Identificadores
Suscribirse a:
Entradas (Atom)