
1. Una clase que herede de otra clase en el proceso de desarrollo de un programa se debe usar la palabra reservada extends
2. Orígenes
2.1. En el 91 se inicia un proyecto para sistemas empotrados
2.2. Se desarrolla OAK en el 93, un lenguaje portable pero seguro.
2.3. Se anuncia en el 95 el lenguaje Java por la empresa SUN
2.4. En el 2004 se anuncia una versión de Java que incluye programación genérica
3. Características
3.1. Simple y orientado a objetos
3.2. Robusto y seguro
3.3. Interpretado, neutro de la arquitectura y portable
3.4. Distribuido y alto desempeño
3.5. Multi-hebra
3.6. Dinámico
4. Ejemplo de aplicación en Java
4.1. Código en consola
4.2. Comentarios
4.2.1. // texto
4.2.1.1. Se ignota el texto hasta el final de la línea
4.2.2. /* texto */
4.2.2.1. Se ignora todo el texto entre /* y */
4.2.3. /^^ texto ^^/
4.2.3.1. Comentarios de documentación
4.3. Main
4.3.1. Cuando se ejecuta un programa, el intérprete invoca el main
4.3.2. Éste tiene un arreglo único que es una cadena de strings
5. Tecnología Java
5.1. Orientado a objetos
5.2. Sintaxis similar a C++
5.3. Gran acogida por parte de programadores
6. Recursos del sistema
6.1. System
6.1.1. Ejemplo
6.2. Applets
6.2.1. Aplicación ligera de corto alcance
6.2.2. Usada en navegadores webs
6.2.3. Posee un modelo diferente de ejecución
6.2.4. Ejemplo
7. Importación de clases y paquetes
7.1. import
7.1.1. permite utilizar clases de un paquete, ejemplo import java.applet.*
7.2. Subclases
7.2.1. Palabra reservada extends permite definir una sublclase a partir de otra
7.3. Implementar métodos
7.3.1. Se puede implementar uno o más métodos
8. Clases y Objetos
8.1. Clases contienen métodos
8.2. Campos y variables definen el estado de un objeto
8.3. Modificadores de la clase
8.3.1. public
8.3.1.1. Accesible desde cualquier lugar
8.3.2. abstrac
8.3.2.1. No puede ser instanciada
8.3.3. final
8.3.3.1. No puede ser derivada
8.4. Control de acceso a miembros
8.4.1. privado
8.4.1.1. Accesibles desde la propia clase
8.4.2. protegido
8.4.2.1. Accesible desde las relaciones de clases y subclases
8.4.3. público
8.4.3.1. Accesibles desde cualquier lugar
8.5. Métodos
8.5.1. Se manipula el estado d euna variable
8.5.2. Valores de parámetros
8.5.2.1. Se paran valor los parámetros en java
8.5.2.2. El parámetro es una referencia entonces no se copia, solo el objeto
8.5.2.3. Para proteger campos de acceso externo se usa el modificador private
8.5.2.4. Es recomendable usar accesores para proteger el estado de los objetos
8.5.3. Sobrecarga de métodos
8.5.3.1. Cada método tiene una firma
8.5.3.2. Se puede tener varios métodos con un mismo nombre, pero diferente parámetros
8.5.4. Miembros estáticos
8.5.4.1. Variable de miembro estático
8.5.4.1.1. Existe una única variable para todos los objetos de la clase
8.5.4.2. Método estático
8.5.4.2.1. Se invoca en nombre de toda la clase
8.5.4.3. Métodos nativos
8.5.4.3.1. Permite que java use código no escrito en java
8.5.4.3.2. El método se invoca desde java
8.5.4.4. Clases anidadas
8.5.4.4.1. Se define como miembro de otra clase
8.5.4.4.2. Clase anidada tiene acceso total a todos los miembros de la clase que pertenece
9. Conceptos básicos del lenguaje Java
9.1. Utiliza Unicode, conjunto de caractéres de 16 bits
9.2. Es sensible a mayúsculas y minúsculas
9.3. Identificadores
9.3.1. Ejemplo
9.3.2. No se pueden utilizar como identificador a las palabras reservadas
9.3.3. los identificadores deben comenzar con letra, _ o $, seguido de letras o dígitos.
9.4. Tipos de datos
9.4.1. Primitivos
9.4.2. Referenciados
9.4.2.1. Dirección o conjunto de valores (arreglos, interfaz, clases)
9.5. Operadores
9.5.1. Se asocia por la izquierda, excepto por la asignación que es por la derecha
9.5.2. La procedencia puede cambiar usando los paréntesis
9.6. Expresiones
9.6.1. Se evalúa de derecha a izquiera
9.6.2. Se evalúan antes de realizar la operación
9.6.3. Tipos
9.6.3.1. Implícita
9.6.3.1.1. Es automática
9.6.3.1.2. Entre valores primitivos se permite cuando soporta un mayor rango de valores
9.6.3.1.3. Una referencia a un objeto de una clase incluye una instancia de cada supertipo
9.6.3.2. Explícita
9.6.3.2.1. La conversión se denomina cast
9.6.3.2.2. Se puede usar referencias a objetos con conversión no segura.
9.7. Operadores aritméticos
9.7.1. Aritméticos
9.7.1.1. Suma +, Resta - , Multiplicación *, División /
9.7.1.2. Incremento a++, Decremento a--
9.7.1.3. Relacionales
9.7.1.3.1. Mayor qué >, Mayoro igual qué >=, Menor <, Menor o igual qué <=, Igual que ==, Diferente !=
9.7.1.4. Operadores al Bit
9.7.1.4.1. And &, Or |, Or exclusivo ^
9.7.1.5. Condicional
9.7.1.5.1. Ejemplo: valor = test ? exp1 : exp2
9.7.1.5.2. Define valor de respuestas y expresiones más compactas
9.7.1.6. Asignación
9.7.1.6.1. +=, -=, /=, *=, <<=, >>=, &=, ^=, |=
9.8. Sentencias de flujo
9.8.1. If - else
9.8.1.1. Ejemplo
9.8.2. switch
9.8.2.1. Ejemplo
9.8.3. while - do while
9.8.3.1. Ejemplo
9.8.4. for
9.8.4.1. Ejemplo
9.8.5. break
9.8.5.1. Permite salir desde cualquier bloque, no solo switch
9.8.5.2. Se usa para terminar una repetición como un bucle.
9.8.6. continue
9.8.6.1. Permite saltar a la siguiente a la final del cuerpo de una repetición y evaluar la condición de término
9.8.7. return
9.8.7.1. Permite terminar la ejecución de un método y retorna al invocador un valor o no.
10. Clases y Objetos
10.1. Clases
10.1.1. Contienen métodos que definen la computación
10.1.2. Estructura
10.1.3. Modificadores
10.1.3.1. public: clase que es accesible desde cualquier otra clase.
10.1.3.2. abstract: La clase no puede ser instanciada
10.1.3.3. final: La clase no puede ser derivada
10.1.4. Variables miembros:
10.1.4.1. static: los objetos con éste modificador tienen una única copia
10.2. Campos
10.2.1. Variables miembros que definen el estado
10.3. Control de acceso de miembros
10.3.1. Privado
10.3.1.1. Se declara con private y son sólo accesibles por la propia clase
10.3.2. Paquete
10.3.2.1. Miembros sin modificador de acceso, sólo accesibles por código y heredados por sublclases en el mismo paquete
10.3.3. Protegido
10.3.3.1. Declarados con protected, sólo accesibles por una subclase del mismo paquete
10.3.4. Público
10.3.4.1. declarados con public son accesibles por cualquier clase
10.4. Constructores
10.4.1. Un objeto recién creado debe inicializar las variables miembros
10.4.2. Los constructores tienen el mismo nombre de la clase y pueden recibir varios parámetros
10.4.3. Los constructores no retornan un valor, no son métodos
10.4.4. Ejemplo
10.4.4.1. Clase Nota
10.4.5. Control de acceso
10.4.5.1. private
10.4.5.1.1. Ninguna otra clase puede instanciar la clase
10.4.5.2. protected
10.4.5.2.1. Sólo subclases de la clase y clases del mismo paquete
10.4.5.3. public
10.4.5.3.1. Cualquier clase puede crear una instancia
10.4.5.4. Sin especificar
10.4.5.4.1. Sólo clases del mismo paquete y de la misma clase pueden crear instancias
10.5. Métodos
10.5.1. Los parámetros se pasan por valorm tanto como primitivos como referencias
10.5.2. Si el parámetro es una referencia, es la referencia la que se copia, no el objeto
10.5.3. Control de acceso
10.5.3.1. private: Para protefer los campos de un acceso externo, se usa el modificar private
10.5.3.2. accesor: Método que asegura sólo de lectura de manera indirecta
10.5.4. Referencia
10.5.4.1. this: Sólo se puede usar en un método no estático, y se refiere al objeto actual sobre el que se invocó el método
10.5.5. Sobrecarga de métodos
10.5.5.1. Se permite tener varios métodos o constructores con un mismo nombre y diferentes parámetros
10.5.6. finalize
10.5.6.1. Permite ejecutar un método de finalización antes de liberar memoria
10.6. Miembros estáticos
10.6.1. Un miembro estático es único para toda una clase
10.6.2. Variable
10.6.2.1. Existe una única variable para todos los objetos de una clase
10.6.3. Método
10.6.3.1. Se invoca en nombre de toda la clase, típicamente usando los nombre de la clase, se llaman métodos de clase
10.7. Clases anidadas
10.7.1. Permite definir una clase como miembro de otra clase.
10.7.2. Ésta clase tiene acceso total a todos los miembros de la clase a que pertenece
10.8. Clases internas
10.8.1. No se puede definir miembros estáticos
10.8.2. Permite relacionar objetos de las clases relacionadas
10.8.3. Puede ser pública o privada
10.8.3.1. Ejemplo
11. Herencia
11.1. Todas las clases son extendidas directa o indirectamente de la clase Object
11.2. Reglas de herencia
11.2.1. Una subclase hereda todos los miembros protegidos, públicos, sin modificador (paquete)
12. Interfaces
12.1. Es declarar tipos consistentes solo de métodos abstractos y constantes
12.2. Éstas son útiles para el diseño correcto de software
12.3. Ejemplo
13. Excepciones
13.1. Evento que interrumpe el flujo normal de la ejecución
13.2. Cuando ocurre tal tipo de evento en un método, se lanza (throw) una excepción, creando un objeto especial, se pasa un runtime para manejar la excepción
13.3. Ventajas
13.3.1. Se separa el código de manejo de errores del código normal
13.3.2. Propaga errores a través de los métodos que se encuentran activos en el stack
13.3.3. Permite agrupar errores y diferenciar errores
14. Archivos
14.1. Clases básicas de archivos
14.1.1. FileReader
14.1.1.1. Lectura de caractéres
14.1.2. FileWriter
14.1.2.1. Escritura de caractéres
14.1.3. FileInputStream
14.1.3.1. Lectura de bytes
14.1.4. FileOutputStream
14.1.4.1. Escritura de bytes
14.2. Clase File
14.2.1. No corresponde a un stream, que permite tener representación abstracta de archivos y directorios
14.2.2. Posee métodos tales como, crear directorio, renombrar, borrar, listar, etc.
14.3. Clase RandomAccessFile
14.3.1. intskiBytes: Mueve el puntero el número de bytes indicando hacia adelante
14.3.2. void seek(long): Posiciona el puntero justo antes del byte especificado