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. Conceptos básicos del lenguaje Java
8.1. Utiliza Unicode, conjunto de caractéres de 16 bits
8.2. Es sensible a mayúsculas y minúsculas
8.3. Identificadores
8.3.1. Ejemplo
8.3.2. No se pueden utilizar como identificador a las palabras reservadas
8.3.3. los identificadores deben comenzar con letra, _ o $, seguido de letras o dígitos.
8.4. Tipos de datos
8.4.1. Primitivos
8.4.2. Referenciados
8.4.2.1. Dirección o conjunto de valores (arreglos, interfaz, clases)
8.5. Operadores
8.5.1. Se asocia por la izquierda, excepto por la asignación que es por la derecha
8.5.2. La procedencia puede cambiar usando los paréntesis
8.6. Expresiones
8.6.1. Se evalúa de derecha a izquiera
8.6.2. Se evalúan antes de realizar la operación
8.6.3. Tipos
8.6.3.1. Implícita
8.6.3.1.1. Es automática
8.6.3.1.2. Entre valores primitivos se permite cuando soporta un mayor rango de valores
8.6.3.1.3. Una referencia a un objeto de una clase incluye una instancia de cada supertipo
8.6.3.2. Explícita
8.6.3.2.1. La conversión se denomina cast
8.6.3.2.2. Se puede usar referencias a objetos con conversión no segura.
8.7. Operadores aritméticos
8.7.1. Aritméticos
8.7.1.1. Suma +, Resta - , Multiplicación *, División /
8.7.1.2. Incremento a++, Decremento a--
8.7.1.3. Relacionales
8.7.1.3.1. Mayor qué >, Mayoro igual qué >=, Menor <, Menor o igual qué <=, Igual que ==, Diferente !=
8.7.1.4. Operadores al Bit
8.7.1.4.1. And &, Or |, Or exclusivo ^
8.7.1.5. Condicional
8.7.1.5.1. Ejemplo: valor = test ? exp1 : exp2
8.7.1.5.2. Define valor de respuestas y expresiones más compactas
8.7.1.6. Asignación
8.7.1.6.1. +=, -=, /=, *=, <<=, >>=, &=, ^=, |=
8.8. Sentencias de flujo
8.8.1. If - else
8.8.1.1. Ejemplo
8.8.2. switch
8.8.2.1. Ejemplo
8.8.3. while - do while
8.8.3.1. Ejemplo
8.8.4. for
8.8.4.1. Ejemplo
8.8.5. break
8.8.5.1. Permite salir desde cualquier bloque, no solo switch
8.8.5.2. Se usa para terminar una repetición como un bucle.
8.8.6. continue
8.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
8.8.7. return
8.8.7.1. Permite terminar la ejecución de un método y retorna al invocador un valor o no.
9. Clases y Objetos
9.1. Clases
9.1.1. Contienen métodos que definen la computación
9.1.2. Estructura
9.1.3. Modificadores
9.1.3.1. public: clase que es accesible desde cualquier otra clase.
9.1.3.2. abstract: La clase no puede ser instanciada
9.1.3.3. final: La clase no puede ser derivada
9.1.4. Variables miembros:
9.1.4.1. static: los objetos con éste modificador tienen una única copia
9.2. Campos
9.2.1. Variables miembros que definen el estado
9.3. Control de acceso de miembros
9.3.1. Privado
9.3.1.1. Se declara con private y son sólo accesibles por la propia clase
9.3.2. Paquete
9.3.2.1. Miembros sin modificador de acceso, sólo accesibles por código y heredados por sublclases en el mismo paquete
9.3.3. Protegido
9.3.3.1. Declarados con protected, sólo accesibles por una subclase del mismo paquete
9.3.4. Público
9.3.4.1. declarados con public son accesibles por cualquier clase
9.4. Constructores
9.4.1. Un objeto recién creado debe inicializar las variables miembros
9.4.2. Los constructores tienen el mismo nombre de la clase y pueden recibir varios parámetros
9.4.3. Los constructores no retornan un valor, no son métodos
9.4.4. Ejemplo
9.4.4.1. Clase Nota
9.4.5. Control de acceso
9.4.5.1. private
9.4.5.1.1. Ninguna otra clase puede instanciar la clase
9.4.5.2. protected
9.4.5.2.1. Sólo subclases de la clase y clases del mismo paquete
9.4.5.3. public
9.4.5.3.1. Cualquier clase puede crear una instancia
9.4.5.4. Sin especificar
9.4.5.4.1. Sólo clases del mismo paquete y de la misma clase pueden crear instancias
9.5. Métodos
9.5.1. Los parámetros se pasan por valorm tanto como primitivos como referencias
9.5.2. Si el parámetro es una referencia, es la referencia la que se copia, no el objeto
9.5.3. Control de acceso
9.5.3.1. private: Para protefer los campos de un acceso externo, se usa el modificar private
9.5.3.2. accesor: Método que asegura sólo de lectura de manera indirecta
9.5.4. Referencia
9.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
9.5.5. Sobrecarga de métodos
9.5.5.1. Se permite tener varios métodos o constructores con un mismo nombre y diferentes parámetros
9.5.6. finalize
9.5.6.1. Permite ejecutar un método de finalización antes de liberar memoria
9.6. Miembros estáticos
9.6.1. Un miembro estático es único para toda una clase
9.6.2. Variable
9.6.2.1. Existe una única variable para todos los objetos de una clase
9.6.3. Método
9.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
9.7. Clases anidadas
9.7.1. Permite definir una clase como miembro de otra clase.
9.7.2. Ésta clase tiene acceso total a todos los miembros de la clase a que pertenece
9.8. Clases internas
9.8.1. No se puede definir miembros estáticos
9.8.2. Permite relacionar objetos de las clases relacionadas
9.8.3. Puede ser pública o privada
9.8.3.1. Ejemplo
10. Herencia
10.1. Todas las clases son extendidas directa o indirectamente de la clase Object
10.2. Reglas de herencia
10.2.1. Una subclase hereda todos los miembros protegidos, públicos, sin modificador (paquete)
11. Interfaces
11.1. Es declarar tipos consistentes solo de métodos abstractos y constantes
11.2. Éstas son útiles para el diseño correcto de software
11.3. Ejemplo
12. Excepciones
12.1. Evento que interrumpe el flujo normal de la ejecución
12.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
12.3. Ventajas
12.3.1. Se separa el código de manejo de errores del código normal
12.3.2. Propaga errores a través de los métodos que se encuentran activos en el stack
12.3.3. Permite agrupar errores y diferenciar errores
13. Archivos
13.1. Clases básicas de archivos
13.1.1. FileReader
13.1.1.1. Lectura de caractéres
13.1.2. FileWriter
13.1.2.1. Escritura de caractéres
13.1.3. FileInputStream
13.1.3.1. Lectura de bytes
13.1.4. FileOutputStream
13.1.4.1. Escritura de bytes
13.2. Clase File
13.2.1. No corresponde a un stream, que permite tener representación abstracta de archivos y directorios
13.2.2. Posee métodos tales como, crear directorio, renombrar, borrar, listar, etc.
13.3. Clase RandomAccessFile
13.3.1. intskiBytes: Mueve el puntero el número de bytes indicando hacia adelante
13.3.2. void seek(long): Posiciona el puntero justo antes del byte especificado
14. Clases y Objetos
14.1. Clases contienen métodos
14.2. Campos y variables definen el estado de un objeto
14.3. Modificadores de la clase
14.3.1. public
14.3.1.1. Accesible desde cualquier lugar
14.3.2. abstrac
14.3.2.1. No puede ser instanciada
14.3.3. final
14.3.3.1. No puede ser derivada
14.4. Control de acceso a miembros
14.4.1. privado
14.4.1.1. Accesibles desde la propia clase
14.4.2. protegido
14.4.2.1. Accesible desde las relaciones de clases y subclases
14.4.3. público
14.4.3.1. Accesibles desde cualquier lugar
14.5. Métodos
14.5.1. Se manipula el estado d euna variable
14.5.2. Valores de parámetros
14.5.2.1. Se paran valor los parámetros en java
14.5.2.2. El parámetro es una referencia entonces no se copia, solo el objeto
14.5.2.3. Para proteger campos de acceso externo se usa el modificador private
14.5.2.4. Es recomendable usar accesores para proteger el estado de los objetos
14.5.3. Sobrecarga de métodos
14.5.3.1. Cada método tiene una firma
14.5.3.2. Se puede tener varios métodos con un mismo nombre, pero diferente parámetros
14.5.4. Miembros estáticos
14.5.4.1. Variable de miembro estático
14.5.4.1.1. Existe una única variable para todos los objetos de la clase
14.5.4.2. Método estático
14.5.4.2.1. Se invoca en nombre de toda la clase
14.5.4.3. Métodos nativos
14.5.4.3.1. Permite que java use código no escrito en java
14.5.4.3.2. El método se invoca desde java
14.5.4.4. Clases anidadas
14.5.4.4.1. Se define como miembro de otra clase
14.5.4.4.2. Clase anidada tiene acceso total a todos los miembros de la clase que pertenece