por David Muñoz Díaz
Este documento está escrito para ayudar a quien lo necesite. Puedes hacer con él lo que quieras,
pero siempre de forma gratuita y desinteresada. Además, es demasiado malo como para venderlo. Se
reirían de ti :)
Si quieres aportar algo a este documento, no dudes en ponerte en contacto con el Grupo de
Usuarios de Linux de la Universidad Carlos III de Madrid (
[email protected]).
Contenido
Aquí tienes la lista de contenidos del texto. Los apartados marcados con * son sólo orientativos y no están
ampliamente explicados aquí, ya que no forman parte del objetivo de este texto. Puedes encontrar una
explicación exhaustiva de estos apartados en cualquier libro de Java, además de las explicaciones que te
dará el profesor de la asignatura. Bueno, en algunas ocasiones, que debería dar.
Prefacio* (que no, que es coña)
Introducción. Cultureta.
pelín de historia
Platón y la OOP
el problema...
... y la solución
concepto de objeto
propiedades
métodos
concepto de clase
Java
¿por qué Java?
caracteríaticas generales de Java *
facilidad (je je jeeee)
lenguaje interpretado
tamaño de los programas
orientado a Internet
JVM
Cómo usar el compilador y la JVM (javac, java)
El movimiento se demuestra andando
definción de una mesa
propiedades
tipos básicos de datos *
métodos
valor de retorno
parámetros
creación y uso de objetos
creación
primero: las referencias
segundo: new
uso
el operador punto
más sobre creación: constructores
¿qué son?
peculiaridades
definición y uso
breve iniciación al polimorfismo *
métodos get/set
¿Por qué?
uso
Variables de clase. Modificador Static
el problema...
... y la solución
uso de static
en propiedades
en métodos
constantes
El método main, arrays y ¡a lanzar programas!
por qué el método main
definición del método main
argumentos
un inciso: arrays
sacabó el inciso
nuestro primer programa
Programando a lo bestia: estructuras de control
Sentencias condicionales
sentencia if
expresión lógica
bloque de sentencias
comparadores de magnitud
AND, OR, NOT
comparadores de cadenas
ifs anidados
if sin elses: CUIDADO!
solución rara
solución más rara
sentencia switch
uso
break
comerte el coco 4
Sentencias repetitivas
definición
sentencia while
regla general para el uso de bucles
variación do - while
sentencia for
¿While o for?
Recursividad
definición
metodología: la cola del cine
partes de un método recursivo
los factoriales
Herencia
para qué sirve
cómo se usa: extends
redefinición de métodos
uso de super()
una nota bastante importante
Casting
preludio al casting: las referencias
la señora referencia
cómo funciona
comparación de referencias
Arreglando bicicletas: parámetros que son referencias
casting
¿Por qué?
cómo se usa
resumen
comerte el coco 6
upcasting, downcasting, Y siguiendo con el inglés, explicit and implicit cast
upcasting
downcasting
casting implícito
casting explícito
La Clase Object
definición
contenido *
¿para qué ese contenido?
la gran utilidad de la clase Object: referencias de tipo Object
Interfaces
definición
uso básico de interfaces
uso avanzado de interfaces: referencias de tipo de interfaces
¿herencia?¿Interfaces?¿comorl?
Epílogo
El contenido de este texto es el estrictamente necesario para poder abordar
cualquier problema de Programación. Este texto es, por tanto, la base necesaria para
poder enfrentarnos a las asignaturas de Programación y Laboratorio de Programación.
En este texto no vamos a ver determinados temas, como Applets, paquetes, pruebas de
programas, etc. Para cualquier consulta sobre dichos temas, te recomiendo los libros de
Java de la editorial Sun o alguno de la infinidad de manuales gratuitos que hay por la
red.
Por tanto, es necesario que te conciencies de que leer este texto no implica
aprobar: implica ser capaz de aprobar. Si te sirve de algo, cuando yo llegué a primero,
sabía bastante menos de lo que hay aquí escrito.
Prefacio
No te engañes: tenemos mucha labor por delante. Pero no hay que pensar que es
ardua y temible. En absoluto. O al menos, espero que no lo sea para ti.
Programar implica siempre dos cosas:
Primero, hay que comerse el coco bastante, pero no para alcanzar complejos
conceptos (bueno, para esto también), sino para todo lo contrario: para conseguir poner
nuestro pensamiento a la altura de un cacho de silicio, que no parece muy listo....
Segundo, la curiosidad no mata al gato, sino que
curiosity Skilled the cat
(por cierto, n.p.i. de de quién es esta frase. Se la he copiado a un miembro del
GUL. Así que si esta frase es suya, le pido diculpas por no pagar derechos de autor)
O sea, que siempre, repito, siempre es bueno parar de estudiar y encender el
ordenador para hacer alguna prueba de lo que estemos estudiando. Si vemos casting
será muy positivo que mandes a tomar por saco los apuntes y escribas un par de clases
para probar “el acceso a los miembros de una calse vía una referencia de tipo la
superclase”. Parece mentira, pero esta frase tiene sentido. En serio, nunca vas a
aprender a programar con un libro, siempre lo aprenderás por tu cuenta. Así que vete
haciendo a la idea de que vas a pasar muncho rato delante de la pantalla, aunque espero
que no sea demasiado tiempo. O que al menos no sea tedioso.
He intentado explicar todo este rollo usando ejemplos de la vida real. Tal vez
quede “un poco” asquerosamente pedante explicar las clases metiendo a Platón por
medio, pero creo que haciéndolo vamos a entender los conceptos más fácilmente, y
sobre todo, no se van a olvidar. Por supuesto, no creas que todo es Platón, también
hablaremos de tu vecina, de la mesa Margarita, de “páginas gué”, la bicicleta Anacleta,
y de mil cosas más. Bueno, mil... lo que se dice mil....
Por supuesto, todo ello respaldado por el pez Otilio, el pato Onorato y el pájaro
que no sé cómo demonios se llama, que no son más que excusas para apartar un poco la
atención y hacer la lectura un pelín más agradable.
Espero haber logrado, aunque sólo sea en pequeña parte, estos objetivos. Ahora,
como dice la historia de la sopa de piedra, debes poner tú de tu parte. ¡Ánimo!
Introducción. Cultureta.
Normalmente, para empezar se opta por definir qué es programar, cómo se lleva
a cabo, conceptos como “software”, “hardware”,
“memoria”, etc etc etc. Vamos a ignorar todo
este rollo porque realmente no importa
en absoluto. Nosotros, por ahora, no
nos vamos a preocupar de la Yo soy un programador
capacidad de la memoria o de la leche.
de la velocidad del proce-
sador. A nosotros nos inte-
resa programar.
Cuando aprendemos
a programar siempre se nos
plantea si debemos
compaginar la progra-
mación con el lenguaje de programación. Parece una tontería,
pero podemos aprender OOP sin saber ningún lenguaje. Es cierto: podemos
saber sobre clases, objetos, herencia, casting, etc sin saber una maldita palabra de
ningún lenguaje. Sin embargo, siempre es positivo compaginar nuestro aprendizaje de
programación con el de un lenguaje propicio para ello.
Además de la OOP, y a modo de curiosidad (cultureta), existen otros tipos de
programación, cada uno con un lenguaje de programación típico. Esta parte, si quieres,
te la puedes saltar.
La programación “lineal” tiene como fundador el antiguo BASIC. A lo largo de
los años, el BASIC ha ido cambiando hasta que hoy en día existen compiladores de
BASIC orientado a objetos (Visual Basic, por ejemplo, mantiene una filosofía de OOP).
La programación lineal se daba con los primeros intérpretes de BASIC. Aquí hay un
ejemplo de este lenguaje:
10 INPUT “¿Cómo te llamas?”, NOMBRE$
20 SALUDO$ = “¡Hola “+NOMBRE$+” ¡”
30 PRINT SALUDO$
40 END
¿Ves? El programa empieza en un punto, y acaba en otro. Esto, claro, tiene sus
inconvenientes: no podemos hacer repeticiones, ni nada de eso. Nacieron las “sentencias
condicionales”:
10 INPUT “¿Cómo estás?”,COMO$
20 IF COMO$=”bien” GOTO 50
30 IF COMO$=”mal” GOTO 70
40 GOTO 10
50 PRINT “Vaya, me alegro.”
60 GOTO 80
70 PRINT “Alégrate!”
80 END
El siguiente paso es la programación procedimental: consiste en dividir el código en
fragmentos independientes. Lenguaje típico, el Pascal.
var
cad:String;
procedure debuti;
begin
Writeln('me alegro');
end;
procedure notandebuti;
begin
Writeln('alegrate!');
end;
begin
Writeln('¿Cómo estás?');
readln(cad);
if (cad='bien') then debuti else notandebuti;
end.
Hay muchos más tipos de programación, y también muchos otros lenguajes muy
raros, Smalltalk, ADA, Prolog.... En realidad, hoy en día muchos de estos lenguajes se
usan con fines didácticos o experimentales.
A nosotros nos interesa la “Programación Orientada a Objetos” (OOP, de
Object-Oriented Programming). Se basa en “encapsular” fragmentos de código en
“burbujas” independientes entre sí. Los códigos mostrados antes no tienen sentido en
OOP. Vamos a ver por qué.
Platón y la OOP
La pregunta es las siguiente: Tenemos una mesa en la cocina, una en el salón,
una mesilla de noche y una en un taller. Estas mesas son diferentes entre sí, pero, sin
embargo, hay algo en ellas que hace que todas SEAN mesas. Una es cuadrada, otra
redonda, unas con tres patas y otras con cuatro. ¿Por qué, si son tan diferentes, son todas
mesas?
Este hombre de aquí dijo que había un mundo aparte del
nuestro en el que existían unos “seres” perfectos, inmutables,
universales, etc etc etc, a quienes llamó Ideas. Los seres de nuestro
mundo físico serían “copias” imperfectas de estas Ideas. Imagina por
tanto que todos los objetos que tenemos alrededor son copias de las
Ideas. De esta forma, al ser copias imperfectas, no serían iguales
entr
Comentarios de: Java para aprobar (0)
No hay comentarios