Aprende JAVA

Características - Completamente orientado a objetos Distribuido, buen tratamiento para redes, programación para Interne

Views 69 Downloads 0 File size 340KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Características -

Completamente orientado a objetos Distribuido, buen tratamiento para redes, programación para Internet Seguro, ni tanto jejejejee, porque no permite desbordad la pila de ejecución, corrupción de memoria, leer o escibir ficheros sin permiso Multihilo (Varios procesos en paralelo) Neutro importante porque es multiplataforma Adaptable, Interpretado Alto rendimiento

PATH está variable debe contener la ruta donde se encuentran las herramientas para la compilación y ejecución de aplicaciones CLASSPATH Es una variable de entorno donde deben contener las direcciones donde se encuentran las clases que van hacer utilizadas para el desarrollo de aplicaciones

Entender el concepto de COMPILACIÓN Y LUEGO EJECUCIÓN

Compila el codigo fuente a través del paquete de herramientas necesarioas para la compilación JDK luego si se establecio correctamente la variable de entorno PATH ejecutara el archivo desde la ruta de ubicación del archivo, luego entra el classpath para utilizar las clases del codigo fuente y ejecutar el programa

IMPORTANTE! Los operadores de comparación < > => 0) this.alto=alto;

} public int getAlto() { return this.alto; } }

Siguiendo el convenio de que setNombre es para métodos que permitan la escritura de un atributo y getNombre para lectura de un atributo el puntero this se utliliza en el interior de una clase para invocar a métodos y atributos del propio objeto, solo será necesario usarlo cuando se quiera invocar un miembro del propio objeto u variables locales.

FACILIDAD DE MANTENIMIENTO DE LA CLASE Creada la clase se opta por cambiar el valor de los atributos se podría solo modificar el códgio de los métodos de acceso y distribuir la nueva versión de la

clase, sin que los programadores que la utilicen tengan que cambiar un solo código en el main.

SOBRECARGA DE MÉTODOS Es utilizar métodos con el mismo nombre pero ojo con diferentes parámetros estos métodos pueden hacer lo mismo pero ellos van a recibir diferentes parámetros, los argumentos le permiten al compilador identificar cada método

CONSTRUCTORES Se crea un constructor para poder dar valores iniciales a los atributos como ejemplo, por le momento no se mas aplicaciones, se utiliza para añadr tareas que deban realizarce en el momento de inicializar un objeto. Es importante que una clase tenga como mínimo un constructor, además deberá cumplr con las reglas que ya sabemos y si se sobrecarga deberá cumplir las mismas reglas de sobrecarga, el uso de constructore puede reducir código y si se dispone de muchos atributos se tendrá dificultada para saber cual es el correcto.

Se puede decir que los lenguajes de programación están divididos en estos dos principales grupos los antiguos que son orientados a procedimientos y los actuales que son orientados a objetos, la diferencia entre estos dos lenguajes es que si un código hecho por un programador y luego modificarlo por otro

sería difícil, y la reutilización de código o aplicaciones en otro parecido, nace la POO por un intento en simplificar el código de programación, lo que se trata es de orientar todo a objetos lo que nos rodea por lo que si se requiere modificar una función que haga otra tarea es simplemento modificar una clase para que siga funcionando correctamente Pilar Modularización ( varias clases que tiene característica y métodos) CLASE Es un modelo donde se redactan las características de un grupo de objetos Ejemplo

USO DE LOS PAQUETES, permiten mejorar el almacenamiento del programa, en esos paquetes se guardan todas las clases usadas en el paquete USO DE CLASES EJEMPLO package POO; public class Coche { // Se especifican las caracteristicas comunes de los coches

int Ruedas=0; //Característica comun las ruedas (todos) int Largo=0;

// Caracteristica todos la tienen

int Ancho=0;

// otra caracteristica comun

int Peso=0; int Motor=0;

// caracteristica común //caraacteristicas comunes

// Siguiente paso describir las caracteristicas, mediante un método // Método constructor Se usa este método constructor que se encarga de dar un estado inicial a un objeto package POO;

public class Uso_Coche {

public static void main(String[] args) { Coche Renault=new Coche(); // Instanciar una clase } } Se crea una instancia llamada Renault que pertenece a la clase coche

CLASE La clase contiene todos los métodos y características que van a exponer los objetos.

MODULARIZACIÓN Y ENCAPSULACIÓN Modularización Trata de dividir en trozos el programa, en vez de laborar un enorme programa trata de dividir en clases , estas clases están conectadas entre si (GENERALMENTE NO SIEMPRE)

Importante la clase pública es la que debe contener el MAIN las demás deben ser privadas o protegidas todo depende del programa, es decir si se tiene una clase principal que es común para todos es debe ser pública Encapsulación

Las clases se interconectan en Java mediante Métodos, cuando eso ocurre se debe utilizar el encapsulamiento Los métodos de cada clases deben ser encapsulados cada clase cumple su función principal, es decir que tareas que solo se deben poder hacer dentro de la clase, mientras que otras cosas se puedan hacer de la clase principal. Hay datos que se deben encapsular y funciones también Ahora se cean métodos para que agreguen comportamientos a los objetos y puedan intercambiar estos entre si dentro de las clases

PAQUETES Se utiliza para dar mas orden al código

METODOS Y CAMPOS o ATRIBUTOS Los métodos definen el comportamiento de los objetos de una clase y usar campos y atributos para guardar el comportamiento del objeto (son variables ) MÉTODOS ESTATICOS Se define a los métodos estáticos como metodos en común puesto que no dependen de un objeto o una clase se los puede invocar sin necesidad de crear objetos por ejemplo, se tiene un método genérico para un televisor obtenerprecio() cuya ejecución generaría el mismo resultado para cualquier objeto. Es decir existe un método común

Método constructor sirve para darle un estado inicial a las clases Modularización Consiste en dividir el programa en clases aplicaciones complejas se reduzcan para poder depurar el error sería mas sencillo Encapsulación Una vez creada la modularización las clases se podran comunicar entre si por medio de métodos, es lo mas oblitorio encapzular, si se tiene una clase con tareas globales es decir que otras clases pueden para funcionar correctamente deben funcionar con los métodos de otra clases es correcto, pero hasta cierto punto porque no es conveniente acceder a los métodos de clases diferentes. Consisten en que la funcionalidad de cada clase se haga desde la propia clase,

por lo tanto no es lógico modificar un valor desde otra clase teniendo un constructor con valores inicializados, por lo tanto se deben encapzular. Para ello se usa un modificador de acceso PRIVATE

MÉTODOS Permiten que las clases interactúen entre si formando una unidad para que un programa funcione MÉTODOS SETTERS Y GETTERS Lo que se trata es que las clases no puedan modificar las funciones principales de las clases, pero si se comuniquen a través de métodos, para poder imprimirlas para ello los métodos Setters y Getters (definidores y captadores respectivamente) Es decir de un setters se modifica el valor de na propiedad y de los getters se capta ese valor modificado Getters sintáxis: public dato a devolver nombre_método() {fuente return} Setters Una vez teniendo las características comunes si es necesario se puede cambiar el valor de cada característica en función de las características iniciales, a estas características se las llama cambiantes porque pueden modificarse dependiendo del requerimiento ( en pocas palabras modifica el valor de una propiedad) sintaxis: public void nombre del metodo(){}

setter solo modifica el dato, mientras que el getter solo muestra por lo tanto debe tener un return osea que debe devolver un valor Getter indicamos el tipo de valor que va a devolver con su respectivo return Setter no devuelve dato por lo que lleva void solo modifica el dato Ahora lo que se debe hacer es instanciar un objeto para luego mostrar los setter primero porque son los que modifican el comportamiento del objeto luego los getter para poder mostrar la modificación del objeto respecto a su comportamiento

IMPORTANTE PRIMERO DECLARAR CARACTERISTICAS COMUNES PARA TODAS LAS CLASES Y LEUGO LAS NO COMUNES PARA CADA UNA DE LAS CLASES

PASAR PARÁMETROS A UN MÉTODO

Consiste a la vez que se llama un método se le pasa un parámetro o valor para que ese método recoja el valor y opere con el Es importante crear funciones con parámetros para darle un ajuste determinado para poder modificar antes de mostrar los datos con eso se puede usar los atributos para modificarlos y darles un valor de retorno a los métodos, para darle caracterización al objeto

NUNCA DEJAR CAMBIAR LAS VARIABLES O ARGUMENTOS DE UNA CLASE POR FAVOR !!!!!!! IMPORTANTE LAS CADENAS DE CARACTERES SE COMPARAN CON LOS MÉTODOS EQUALS DE LA CLASE STRING

CREACIÓN DE OBJETOS EN VEZ DE TRABAJAR CON FICHEROS FUENTES, O TRABAJAR CON UN UNICO FICHERO FUENTE

Significa crear todas las clases en un solo fichero .java, es decir solo una clase será publica las demás deben tener un modificador de acceso, no considero oportuno usar este método.

Crear un constructor con parámetros 1) debe tener un acceso publico para tener acceso a diferentes clases

Se puede ver en la api de java que muchas paqutes pueden tener el mismo nombre es decir sobrecargar paquetes

// clases predefinidas GregorianCalendar Lo que hace es construir una fecha con el día mes y año// cuando se va a verificar el paquete dispone de varios cosntructors como métodos para su uso específico para este ejemplo se uso el segundo cosntructor con un método que es para obtener el tiempo

USO DE LA API Se puede observar para este caso que la clase usad tiene doble herencia, eso se puede verificar en la api en la parte superior de la descripción de la clase En el ejercicio se vio como almacenar datos, que es mejor por array Donde se podrá almacenar los empleados y luego un bucle for para subir sueldo recorrer los empleados y consultarlos

en java no s posible crear array de varios datos, para ello se usa el concepto de clases que permite crear array de varios datos como el ejemplo con la primera posición se da un array que recibe string enterios y tiempo UTILIZAR SIEMPRE SIEMPRE EL FOR EACH PARA USAR MATRICEZ REDUCE MUCHO EL CÓDIGO USARLOS NO OLVIDAR

USO DE LA COSNTANTE FINAL Si es necesario que un dato se conserve constante y que no se pueda modificar una vez establecido su valor se deberá optar por modificar la variable con el especificador FINAL para que bloquee cualquier cambio de la variable.

EXPLICACIÓN SOBRE LA PALABRA STATIC Es aplicable tanto a constantes, métodos y variables

Cuando nosotros creamos un constructor o un método y se le asignan unos parámetros cada vez que se instancia un objeto el hace una copia de cada uno de esos métodos y variables, entonces cada copia es diferente por ejemplo si se llama o crea un objeto llamado x y otro llamado y cada uno va a llamar a los diferentes métodos y variables al llamarlos será diferente el llamado para cada uno hará una copia de cada método y variables y clases, por lo tanto para que java asigne automáticamente y correlativamente un numero o un ID se debe usar la palabra:

STATIC EnTONCES LO QUE SE hará es que no halla una copia de cada variable solo exista una copia, tampoco es posible crear un objeto y llamar a un STATCI ees importante tener esa aclaración.

Por ejemplo si tenemos la variable llamada ID, posteriormente instanciamos un objeto de la clase que alberga esa variable lo que hace esa clase es compartir la variable pero ojo, para usar la variable es necesario llamar a la clase, con los objetos no es posible llamar a las variables STATIC, lo mismo ocurre con los métodos solo será posible llamarlos con las clases más no con los objetos es como una especia de encapsulación. Otro ejemplo es el método MAIN, este no actua sobre ningú objeto. Otra consideración es que los métodos static no pueden acceder a los campos de las clases es decir a ninguna caracteristica de la clases (variables)

Consideraciones del método Static - No actúan sobre Objetos -No acceden a campos de ejemplares (variables/constntes declaradas en la clases) a menos que estas también sean static - Para llamarlos se utiliza el nombre de la clase. Método.

SOBRECARGA DE CONSTRUCTORES

Ya sabemos que los constructores se encargan de darle un estado inicial a nuestros objetos Esto implica que una misma clase puede contener varios métodos con el mismo nombre de la clase es decir varios constructores, se debe tener diferentes argumentos. Por ejemplo si creamos un objeto con un constructor lo obligaremos a que si el constructor tenga unos parámetros ese objeto tendra esos parámetros iniciales, para llamar a los constructores debemos saber cuantos parámetros y que parámetros necesitamos La sobrecarga de constructores simplemente sirve para dar diferentes comportamientos a los objetos (iniciales)

Cómo eliminar los demás parámetros de los anteriores constructores que evidencian retornos nulos , para darle valores a esos parámetros de los otros constructores se procede así : usando el this this(los parámetros faltantes) lo que hace el this es llamar al otro constructor, entonces si existe varios constructores el this busca el constructor con los mismos numeros de parámetros.

HERENCIA (CARACTERÍSTICA MÁS IMPORTANTE EN POO) Heredar caracteristicas y métodos de las diferentes clases ya creadas, por ejemplo si una clase COCHE tiene similares comportamientos se podría crear una Furgoneta que herede sus comportamiento por ejemplo las ruedas el color etc etc así como los diferentes métodos, es decir se comparte algúnas características

-PARA EVITAR QUE UNA CLASE SEA HEREDARA SE DEBERA CODIFICAR EL MODIFICADOR FINAL DELANTE DE LA CLASE

PUBLIC CLASS CLASE FINAL

PROBLEMA PARA LLAMAR A SUPERCLASES PARA HEREDAR (CONSTRUCTOR)

Cuando tenemos la herencia de una superclase, se sabe que se puede heredar los métodos pero no tiene acceso a ello puesto que el modificador private no permite dicha acción, ¿Cómo acceder a dichos datos desde la clase deriva ?, en el caso de que la superclase tenga métodos set/get se pueden heredar pero para la inicialización e atributos es decir CONSTRUCTORES se deberá hacer una técnica diferentes EJECUCIÓN DE CONSTRUCTORES CON LA HERENCIA Cómo norma general cada vez que se ejecute un programa con clases que heredan de una super clase, la creación de un objeto antes de ejecutarse el constructor de dichas clases dervias se ejecutara el primero de la superclase. La instrucción SUPER(); llama ya sea implicitamente o explicitamente a la super clase para que se ejecute su primer constructor luego ejecutar los constructor de las subclases

Solución para la falta de conocimiento (Ignorancia sobe el tema) Es necesario cuando se hereda de la superclase crear en la sublclase un constructor para después llamar a super el constructor de la superclase, luego se crea un objeto para llamar a la clase del objeto.

MÉTODOS Y ATRIBUTOS PROTEGIDOS Existe un modificador que es aplicable a métodos y atributos de una clase que se utiliza especialmente con la herencia. Protected Protected cualquier clase, método y atributo que lo preceda de una clase tendrá acceso desde cualquier otra subclase independientemente de los paquetes en que se encuentren

package varios; public class persona(){

private Strinf Fecha_Nacimiento; public Persona(String F){ Fecha_Naciemiento=F; } Protected int getEdad(){

//implementación del método } }

SI tendríamos una subclase en otro paquete por eemplo package basico; import basico.Persona; asi se podra acceder al atributo protegido, solo se podra acceder a través de la herencia mas no por una referencia de un objeto p.getEdad() // saldra error de compilacion

PARA ACCEDER A LOS METODOS DE LAS SUPERCLASES SE DEBE USAR LA PALABRA SUPER. NOMBRE DE LA CLASE.

SOBREESCRITURA Y SOBRECARGA EN HERENCIA Cuando se tiene un método de una superclase y es necesario obtener una sublclase que necesita ese método pero con nuevo codigo se puede hacer mediante la sobreescritura se debe seguir una noción de reglas: - la sobreescritura de métodos debe tener el mismo tipo de retorno, y los mismos parámetros

CLASES ABSTRACTAS //

es un tema muy relacionado con el POLIFORMISMO. Es decir que se declara un método y queda definido es decir se especifica su nombre, parámetros, tipo de devolución y retorno pero no contiene ningún código alguno, a estos tipos de métodos se les denomina abstraactos.

Entendido.... Un método abstracto se caracteriza porque su código está vacio es decir no tiene características, no tiene IMPLEMENTACIÓN, por lo tanto puede que las subclases hagan uso de es método para sobreescribirlo y usarlo para suplir su tarea. Sobre este tema se debe tener las siguientes consideraciones: -Si tengo una clase abstracta esta puede tener tanto métodos abstractos como no abstractos, el hecho de que tenga un solo método abstracto la vuelve a la clase abstracta. -No es posible crear objetos de una clase abstracta, al haber métodos que no estan definidos en la clase, no está permitido crear objetos por ella.

Como ya sabemos el proposito de las clases abstractas es servir de base para subclases futuras para que los métodos abstractos puedan modificar mediante sobreescritura las caracteristicas mismas de los métodos ( realizar implementaciones)

- Las subclases de una clase abstracta están obligadas a sobreescribir los métodos abstractos que heredan, si no es necesario utilizar un método abstracto de una clase, igual la subclase deberá ser declarada como abstracta.

- Una clase abstracta puede tener consructores, puede que la clase herede a mas clases, la cual si podra crear objetos para inicializarlos con el constructor. POLIFORMISMO Es una de las principales aplicaciones de la herencia y las clases abstractas. ASIGNACIÓN DE OBJETOS A VARIABLES DE SU SUPERCLASES Cuando tenemos una herencia, obviamente tenemos una superclase esta super clase hereda métodos y caracteristicas a las subclases, existe la posibilidad de crear una expresión con la superclase como viene a continuación

superclase expresión; Herencia_1 f; en la anterior definición crearmos una variable f para asignarle los objetos de las diferentes subclases, para que con dicha variable se pueda invocar a los mismos métodos pero de diferentes objetos; (JAVA DETERMINA EN EL TIEMPO DE EJECUCIÓN EL MÉTODO QUE DEBE EJECUTAR)

VENTAJAS DE LA UTILIZACION DEL POLIMORFISMO El simple hecho de que una variable pueda invocar a varios métodos de la superclase para los diferentes objetos hace que la REUTILIZACIÓN DE CÓDIGO SEA MAS EVIDENTE.

TIPO DE RETORNO COVARIANTES

Existe la posibilidad de realizar sobreescritura conservando siempre las reglas de sobreescritura a expcepción de el valor de retorno