You are on page 1of 49

Programacin

en Lenguaje Java
Tema 1. Introduccin a los lenguajes de programacin

Michael Gonzlez Harbour


Mario Aldea Rivas
Departamento de Matem.cas,
Estads.ca y Computacin

Este tema se publica bajo Licencia:


Crea.ve Commons BY-NC-SA 4.0
Programacin en Java
1. Introduccin a los lenguajes de programacin
Lenguajes de alto nivel. El proceso de compilacin. El ciclo de vida del software.
Concepto de algoritmo. Concepto de clase y objeto. Diagramas de clases.
Estructura de un programa. Estructura de un mtodo.
2. Datos y expresiones
3. Estructuras algortmicas
4. Datos Compuestos
5. Entrada/salida
6. Clases, referencias y objetos
7. Modularidad y abstraccin
8. Herencia y polimorfismo
9. Tratamiento de errores
10 ..., 11 ...

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 1


UNIVERSIDAD
DE CANTABRIA
1.1. Lenguajes de programacin
Las instrucciones de un programa son cdigos numricos almacenados
en la memoria del computador
Ejemplo de lenguaje mquina para el microprocesador 68000: suma de
dos enteros:
Direccin Cdigo Binario Cdigo Ensamblador Alto Nivel

$1000 0011101000111000 MOVE.W $1200,D5 Z=X+Y


$1002 0001001000000000
$1004 1101101001111000 ADD.W $1202,D5
$1006 0001001000000010
$1008 0011000111000101 MOVE.W $D5,$1204
$100A 0001001000000100

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 2


UNIVERSIDAD
DE CANTABRIA
Programacin del computador
La programacin mediante cdigos numricos se conoce como
lenguaje mquina
es muy compleja
Por ello se necesitan lenguajes de programacin ms cercanos a los
programadores

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 3


UNIVERSIDAD
DE CANTABRIA
Lenguajes de alto y bajo nivel
Necesitamos escribir programas en un lenguaje ms cmodo para los
humanos
lenguaje de bajo nivel o ensamblador
- cada instruccin corresponde a una instruccin de lenguaje mquina
- es dependiente de la mquina
- tericamente ms eficientes
lenguajes de alto nivel
- instrucciones ms abstractas y avanzadas
- son lenguajes independientes de la mquina
- en la prctica, mucho ms productivos

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 4


UNIVERSIDAD
DE CANTABRIA
Notas:
Para hacer accesible la programacin de un computador a cualquier persona, existen lenguajes de
programacin que tienen como funcin presentar al usuario el computador de acuerdo con un modelo
abstracto (informtico) sencillo e independiente de su estructura electrnica interna:

Los lenguajes tienen dos categoras


Lenguaje ensamblador o de bajo nivel. Cada instruccin de lenguaje ensamblador se
corresponde con una instruccin de lenguaje mquina, pero en lugar de codificarse mediante nmeros
se codifica mediante smbolos alfanumricos, ms fciles de recordar. En teora se puede conseguir
ms eficiencia, pues podemos usar toda la potencia ofrecida por la mquina. En la prctica, programar
en lenguaje ensamblador es tedioso, difcil, con mucha facilidad para cometer errores y, por tanto,
poco productivo
Lenguajes de alto nivel. Permiten programar utilizando un lenguaje ms prximo al humano, e
independiente de la mquina. Ejemplos de este tipo de lenguajes son el Java, FORTRAN, C, BASIC,
Pascal, Ada, etc. Los lenguajes de alto nivel producen un cdigo un poco menos eficiente que el
ensamblador, pero ms sencillo de escribir y mantener, con menos errores, y mucho ms productivo.

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 5


UNIVERSIDAD
DE CANTABRIA
Traductores: ensambladores,
compiladores e intrpretes
Son programas que traducen un programa de aplicacin escrito en un
lenguaje de programacin, a un programa en lenguaje mquina:
lenguaje ensamblador: se traduce mediante un programa
ensamblador
lenguajes de alto nivel: se traducen mediante compiladores e
intrpretes
- los compiladores traducen el programa de aplicacin antes de que ste
se ejecute
- los intrpretes van traduciendo el programa de aplicacin a medida
que se va ejecutando

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 6


UNIVERSIDAD
DE CANTABRIA
Notas:
El vendedor de un computador, acompaa el equipo fsico con un conjunto de programas de ayuda,
desarrollados por l o por personas especializadas, que tienen como funcin presentar al usuario el
computador de acuerdo con un modelo abstracto (informtico) sencillo e independiente de su estructura
electrnica interna:
ensambladores, compiladores e intrpretes
sistema operativo
entorno de desarrollo y algunos programas de aplicacin

Los ensambladores, compiladores e intrpretes traducen un programa escrito en un lenguaje ms o menos


cmodo para el usuario, a lenguaje mquina. Segn el lenguaje utilizado, las herramientas son:
Lenguajes de bajo nivel: se utiliza un programa ensamblador, que traduce los smbolos
alfanumricos a cdigo mquina, por medio de algoritmos muy simples.
Lenguajes de alto nivel. La traduccin a lenguaje mquina se hace mediante compiladores (que
traducen el programa escrito en lenguaje de alto nivel de forma completa antes de su ejecucin) e
intrpretes (que traducen cada instruccin mientras se ejecuta el programa). Los intrpretes son ms
lentos en la ejecucin, ya que tienen que hacer el trabajo de traduccin cada vez que se ejecuta el
programa. Hoy en da es ms habitual usar compiladores.

Los lenguajes de programacin de alto nivel han sido definidos como una solucin intermedia entre los
lenguajes naturales humanos y los lenguajes mquina de los computadores. Estn bien definidos,
en el sentido de que la tarea que se puede expresar con ellos no es ambigua y por lo tanto pueden ser
traducidos en un programa mquina concreto, de forma automatizada y por el propio (aunque no
necesariamente) computador que va a realizar la tarea.

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 7


UNIVERSIDAD
DE CANTABRIA
Ejemplos de lenguajes de alto nivel
Los inicios:
Fortran: 1956, para clculo cientfico
- estndares: 1966, 1977, 1990, 1997, 2003, 2008
Cobol: 1960, para aplicaciones de gestin
- estndar actual: 2002
Lisp: 1959, para inteligencia artificial
- estandarizado por ANSI en 1994 (common LISP)
- estandarizado por ISO en 1997, actualizado en 2007 (ISLISP)
Basic: 1964, para docencia, interpretado
- Visual Basic - Visual Studio 2012 (Microsoft)

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 8


UNIVERSIDAD
DE CANTABRIA
Notas:
Existen muchos lenguajes de alto nivel de propsito general, sus principales diferencias se encuentran en
que poseen un conjunto de rdenes mas adecuado para expresar tareas de un tipo concreto de problema
o porque corresponden a distintos niveles de evolucin de los computadores:

FORTRAN (FORmula TRANslation). Su nombre evidencia la orientacin matemtica de uno de los lenguajes
de alto nivel mas antiguos, que an perduran. J. Backus lo desarroll en 1956. Aunque ha perdido terreno
frente a los lenguajes mas modernos, todava es ampliamente utilizado en aplicaciones cientficas de
grandes clculos numricos, porque probablemente, es el lenguaje con mayor nmero de libreras,
desarrolladas y comprobadas por mucha gente, a lo largo de su historia.

COBOL (COmmon Business Oriented Language). Se trata del lenguaje que ha alcanzado una mayor
resonancia en las tareas de gestin. Su desarrollo fue promovido por el Departamento de Defensa de Los
EEUU, en 1960. El lenguaje ha sufrido muchas extensiones, y ha sido actualizado recientemente.

LISP (LISt Processing). El Massachusetts Institute of Technology cre, en 1959, este lenguaje de alto nivel
orientado a aplicaciones de inteligencia artificial. La programacin de procesos recurrentes (edificados sobre
datos procesados en los pasos anteriores) es uno de los puntos fuertes del LISP.

BASIC (Beginners All-purpose Symbolic Instruction Code). Naci entre 1964 y 1965 en el Dartmouth
College como una herramienta para la enseanza. Con el tiempo han ido proliferando los dialectos y
versiones, hasta el punto de que es raro el fabricante que no desarrolla un dialecto para sus propios equipos.
Fue muy popular por su sencillez, pero tiene carencias importantes.

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 9


UNIVERSIDAD
DE CANTABRIA
Ejemplos de lenguajes (cont.)
Hacia la programacin estructurada:
Pascal: 1969, para docencia, programacin estructurada
C: 1972, para programacin del software del sistema
- estandarizado en 1990, 1999, y 2011
Ada: 1983, para sistemas de alta integridad, incluyendo sistemas de
tiempo real
- estandarizado en 1983

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 10


UNIVERSIDAD
DE CANTABRIA
Notas:
PASCAL (En honor del matemtico francs Blaise Pascal). Es un lenguaje de programacin desarrollado por
el profesor Nicklaus Wirth, en 1969, en el Instituto Federal de Tecnologa de Zurich partiendo de los
fundamentos del ALGOL. Fue uno de los primeros lenguaje que incorporaron los conceptos de programacin
estructurada. Aunque fue muy popular, la dificultad para partir el programa en mdulos y la falta de
estandarizacin han hecho decaer su uso.

C. Es un lenguaje de programacin desarrollado por la Bell Laboratories, en principio para trabajar con el
sistema operativo UNIX. Quizs por ello, la popularidad del 'C' es muy alta. Es un lenguaje que, al mismo
tiempo que permite una programacin en alto nivel, permite una gran aproximacin a la mquina. Muchos
lo consideran un lenguaje intermedio entre alto y bajo nivel. Como estos ltimos, presenta alta eficiencia y
escasa fiabilidad. Es fcil cometer errores en C.

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 11


UNIVERSIDAD
DE CANTABRIA
Ejemplos de lenguajes (cont.)
Lenguajes de programacin orientada a objetos:
Smaltalk: 1980, para programacin orientada a objetos
- estandarizado en 1998
C++: 1987, extensin mejorada del C que incorpora programacin
orientada a objetos
- estandarizado en 1998, estandarizado de nuevo en 2011
Java: 1995, para programacin orientada a objetos en sistemas
distribuidos (red Internet)
- versin actual: Java 7 (2011)
- ofrecido como software libre en 2007
Ada 95, Ada 2005, Ada 2012: versiones mejoradas del anterior,
incluyendo programacin orientada a objetos
- estandarizado en 1995, 2005 y 2012
www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 12
UNIVERSIDAD
DE CANTABRIA
Notas:
SMALTALK: Lenguaje de programacin orientada a objetos puro. Es muy ineficiente con respecto a
lenguajes procedurales como el C o el Ada, pero es cmodo de usar y de programar en l.

JAVA: Lenguaje derivado del C en cuanto a sintaxis, pero ms parecido al Ada 95 en cuanto a las
comprobaciones que hace el compilador y soporte de la programacin concurrente. Est pensado para su
ejecucin en sistemas distribuidos (internet). Existe un cdigo intermedio, bien definido, que puede
intercambiarse entre computadores diferentes para luego ser traducido y ejecutado.

C++: Extensin del lenguaje C que mejora algunos de sus inconvenientes, y aade construcciones de
programacin orientada a objetos. Entre las mejoras destacan una mayor comprobacin de los tipos de
datos por parte del compilador, las excepciones, y las plantillas genricas.

ADA (En honor de Lady Augusta ADA Byron). El ADA es un lenguaje inspirado en el PASCAL, que fue
promovido por el Departamento de Defensa de Los EEUU. El objetivo de su desarrollo era conseguir un
lenguaje con posibilidades de convertirse en un estndar universal y que facilitara la ingeniera de software
y el mantenimiento de los programas. Entre sus campos de aplicacin se incluyen los sistemas de tiempo
real y los sistemas de alta integridad. El 1995 se revis el lenguaje para mejorarlo y para aadirle
construcciones de programacin orientada al objeto. En 2005 se finaliz una nueva versin y en 2012 se
est completando una nueva.

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 13


UNIVERSIDAD
DE CANTABRIA
Ejemplos de lenguajes (cont.)
Otros lenguajes de programacin:
C# (C sharp): orientado a objetos y orientado a componentes;
sintaxis basada en C++
- introducido por Microsoft en 2000, estandarizado por ISO en 2003 y
2006 (versin 2.0)
- versin actual: 5.0 (2012)
Objective-C: es un superconjunto de C al que se aade la
programacin orientada a objetos de Smalltalk
- se utiliza como lenguaje de programacin principal de Apple para OS X
e iOS
- versin actual: 2.0 (2007)

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 14


UNIVERSIDAD
DE CANTABRIA
Ejemplos de lenguajes (cont.)
Lenguajes de guiones o scripts:
PHP: desarrollado para hacer pginas Web dinmicas, soportado por
la mayora de servidores Web
- desarrollado en 1995, versin actual 5.5 (2013)
Perl: interpretado, con tipos dinmicos, no es orientado a objetos.
Tiene facilidades de manipulacin de textos
- desarrollado en 1987, versin actual 5.16 (2012)
Python: habitualmente interpretado, orientado a objetos, con tipos
dinmicos; hace nfasis en la legibilidad
- es de finales de los 80; versin actual 3.3 (2013)

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 15


UNIVERSIDAD
DE CANTABRIA
Ejemplos de lenguajes (cont.)
Lenguajes de guiones o scripts (continuacin):
JavaScript: interpretado, orientado a objetos, soportado por
muchos navegadores Web. Sintaxis inspirada en Java
- creado en 1995, propiedad de Oracle; versin actual 1.8.5 (2011)
- estandarizado en 1997 como ECMAScript; versin actual 5.1 (2011)
Ruby: Lenguaje de scripts, interpretado, orientado a objetos, con
tipos dinmicos. Sintaxis inspirada en Perl y Smalltalk
- creado en 1993, no estandarizado
- versin actual 2.0.0 (2013)

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 16


UNIVERSIDAD
DE CANTABRIA
Notas:
Un lenguaje de scripts o de guiones es un lenguaje de programacin para controlar la ejecucin de otras
aplicaciones. Suelen ser interpretados. Tienen mucho xito para programar aplicaciones web.

Un lenguaje con tipos dinmicos es aquel en el que la comprobacin del tipo de dato que se est utilizando
se hace durante la ejecucin, en lugar de hacerse de manera esttica durante la compilacin.

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 17


UNIVERSIDAD
DE CANTABRIA
Rnking de lenguajes de programacin

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 18


UNIVERSIDAD
DE CANTABRIA
Notas:
Fuente:

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Fecha: Sep 2015

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 19


UNIVERSIDAD
DE CANTABRIA
El lenguaje Java
Desarrollado por la empresa Sun Microsystems (ahora Oracle) en 1995
Recibe una amplia aceptacin
Objetivos generales:
WORA: (Write Once, Run Anywhere)
Portabilidad sin necesidad de recompilar
Programacin distribuida
Orientado a objetos
- abstraccin de datos
- modularidad, encapsulado, y ocultamiento de informacin
- herencia y polimorfismo

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 20


UNIVERSIDAD
DE CANTABRIA
El lenguaje Java (cont.)
Objetivos generales (cont.):
Ms fiable y seguro que C o C++:
- memoria dinmica automtica, que evita los punteros explcitos
- tipificacin estricta
- comprobacin automtica de tamaos de variables
Sintaxis similar a la del C/C++
Concurrencia integrada en el lenguaje
Excepciones declaradas
Interfaz grfica integrada en el lenguaje
La versin actual es la 1.8 (Java 8)

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 21


UNIVERSIDAD
DE CANTABRIA
1.2. El proceso de compilacin
Preprocesador 010010101010101010000010101000101010101010101010 Libreras
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010

Cdigo fuente final


010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

Front-end
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

Editor Cdigo intermedio 010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

de 010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010 Enlazador
texto
010010101010101010000010101000101010101010101010

Back-end

Cdigo ensamblador
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010

Ensamblador
010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

Cdigo objeto
Ficheros de Ficheros de Programa
cdigo fuente Compilador cdigo objeto Ejecutable

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 22


UNIVERSIDAD
DE CANTABRIA
Notas:
Un compilador puede definirse como una herramienta automtica de traduccin que lee un programa escrito
en un lenguaje (el lenguaje fuente) y lo traduce a un programa equivalente en otro lenguaje (el lenguaje
objeto). En el proceso de traduccin el compilador notifica al usuario de la presencia de errores en el
programa fuente.

La variedad de compiladores que pueden aparecer es muy alta. Existen miles de lenguajes fuente.
Igualmente ocurre con los lenguajes objeto: pueden ser otros lenguajes de programacin, o el lenguaje
mquina de cualquier computador entre un microprocesador o un supercomputador. En cualquier caso las
tareas que debe realizar son las mismas.

Adems del compilador tambin son necesarios otros programas para crear un programa ejecutable: el
preprocesador, el ensamblador, el enlazador, y el cargador. En la figura de arriba se muestra un proceso de
compilacin tpico.

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 23


UNIVERSIDAD
DE CANTABRIA
Compilacin para mquina virtual
Preprocesador 010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

Cdigo fuente final


010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010
Libreras
Nativas
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

Front-end
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010 010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010 010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010 010010101010101010000010101000101010101010101010

Editor Cdigo intermedio 010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

de 010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

texto
010010101010101010000010101000101010101010101010

Back-end Intrprete
010010101010101010000010101000101010101010101010
Cargador
Cdigo de Mquina
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010 Dinmico
Virtual 010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010
de Clases
010010101010101010000010101000101010101010101010

010010101010101010000010101000101010101010101010

Mquina
Virtual
Ficheros de Compilador Ficheros con
cdigo fuente clases

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 24


UNIVERSIDAD
DE CANTABRIA
Notas:
La arquitectura del entorno de ejecucin de programas Java se basa en una mquina virtual, que se ejecuta
en el computador para interpretar las instrucciones del programa del usuario descritas en un cdigo
intermedio especial, llamado cdigo de mquina virtual Java (el Java Byte Code).

La idea principal de esta arquitectura es la de Escribir una vez, ejecutar en cualquier sitio. El compilador
de Java no genera cdigo mquina de un computador concreto, sino un cdigo especial, que luego es
interpretado por otro programa, llamado mquina virtual, que existe en cada computador en el que se desea
ejecutar el programa Java. De este modo, un programa Java se puede ejecutar indistintamente en cualquier
computador que disponga de esa mquina virtual, sin necesidad de recompilarlo.

Adicionalmente, en la arquitectura Java los programas no se enlazan antes de su ejecucin, sino que se
utiliza un enlazado dinmico. Cuando se hace una llamada a una operacin de un mdulo (clase) que no
est cargado en la mquina virtual, sta se encarga de buscar ese mdulo y cargarlo en ese momento en
la mquina virtual.

Desde el programa del usuario se pueden utilizar operaciones nativas, suministradas por la mquina
virtual, escritas generalmente en cdigo mquina, y que pueden acceder a los dispositivos hardware del
computador. El resultado es: programas muy portables, muy dinmicos, aunque poco eficientes.

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 25


UNIVERSIDAD
DE CANTABRIA
1.3. El ciclo de vida del software
Requisitos
Anlisis de Pruebas
Informales
Requisitos de Aceptacin
Documento de
Requisitos
Anlisis de Pruebas
Especificaciones de Sistema
Documento de
Especificaciones
Diseo de la Pruebas
Arquitectura de Integracin
Arquitectura
del Programa
Diseo Pruebas
Detallado de Unidad
Diseo de cada Mdulos de
Mdulo Programa

Codificacin
Ciclo en V
www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 26
UNIVERSIDAD
DE CANTABRIA
Notas:
Los pasos que se siguen generalmente a la hora de desarrollar un programa son los siguientes:
Anlisis de requisitos: Se define el problema a resolver y todos los objetivos que se pretenden, pero
sin indicar la forma en la que se resuelve.
Especificacin: Se determina la forma en la que se resolver el problema, pero sin entrar an en su
implementacin informtica. Se determina asimismo la interfaz con el usuario.
Diseo de la arquitectura del programa: Se divide el problema en mdulos, se especifica lo que
hace cada mdulo, as como las interfaces de cada uno de ellos.
Diseo detallado de los mdulos: Para cada mdulo se disean detalladamente las estructuras de
datos y los algoritmos a emplear.
Codificacin: Se escribe el programa en el lenguaje de programacin elegido.
Pruebas de mdulos: Se prueban los mdulos del programa aisladamente y se corrigen los fallos
hasta conseguir un funcionamiento correcto.
Integracin y Prueba de sistema: Se unen todos los mdulos, y se prueba el funcionamiento del
programa completo.
Prueba de aceptacin: Instalacin en el lugar definitivo y aceptacin por parte del cliente

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 27


UNIVERSIDAD
DE CANTABRIA
Distribucin del Esfuerzo de desarrollo

anlisis y diseo

codificacin

pruebas e
integracin

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 28


UNIVERSIDAD
DE CANTABRIA
Coste de los sistemas informticos
Los errores software tienen un alto coste: efecto y correccin

100

Coste relativo de corregir un error


40

16

6.3

2.5

0
Ana Dis Cod Int Pru Man
Etapa en que se detecta el error

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 29


UNIVERSIDAD
DE CANTABRIA
Coste de los sistemas informticos
Relacin entre el coste de HW y SW

100

80 Hardware
% del coste total
60

40
Software

20

0
1955 1970 1995
Ao

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 30


UNIVERSIDAD
DE CANTABRIA
1.4. Concepto de algoritmo
Un algoritmo es:
una secuencia finita de instrucciones,
cada una de ellas con un claro significado,
que puede ser realizada con un esfuerzo finito
y en un tiempo finito
El algoritmo se disea en la etapa de diseo detallado y se corresponde
habitualmente con el nivel de operacin o mtodo
Los programas se componen habitualmente de muchas clases que
contienen algoritmos, junto con datos utilizados por ellos
los datos y algoritmos relacionados entre s se encapsulan en la
misma clase

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 31


UNIVERSIDAD
DE CANTABRIA
Ejemplo de algoritmo
Programa que intenta mantener una habitacin a una temperatura
deseada ( 0.5 grados)
dispone de un radiador que se puede encender y apagar,
y un termmetro
Variables:
tempDeseada: magnitud real (C)
tempAmbiente: magnitud real (C)
estadoRadiador: encendido o apagado
Estado del programa:
valor de tempDeseada, tempAmbiente, y estadoRadiador en
cada instante

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 32


UNIVERSIDAD
DE CANTABRIA
Ejemplo (cont.)
Algoritmo

repetir continuamente lo siguiente


si hace fro encender el radiador
si hace calor apagar el radiador
esperar un rato
fin repetir
El algoritmo se repite continuamente (hasta que el usuario apague el
sistema)
Ahora debemos refinar este algoritmo para expresarlo en trminos de
las variables del sistema

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 33


UNIVERSIDAD
DE CANTABRIA
Ejemplo (cont.)
Algoritmo refinado
repetir continuamente lo siguiente
si tempAmbiente<tempDeseada-0.5 entonces
// hace fro
estadoRadiador:=encendido
fin si
si tempAmbiente>tempDeseada+0.5 entonces
// hace calor
estadoRadiador:=apagado
fin si
esperar 1 minuto
fin repetir
Observar que si no hace ni fro ni calor el radiador se queda como estaba

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 34


UNIVERSIDAD
DE CANTABRIA
A observar
Hemos descrito el algoritmo mediante la tcnica llamada pseudocdigo,
que tiene
instrucciones de control presentes en todos los lenguajes
si condicin entonces
hacer cosas
fin si
obsrvese el uso del sangrado para determinar el mbito de
aplicacin de cada instruccin de control
clculos
acciones expresadas sin el formalismo de los lenguajes
El propsito es que el pseudocdigo refinado sea sencillo, y
directamente traducible a cdigo en cualquier lenguaje

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 35


UNIVERSIDAD
DE CANTABRIA
1.5. Concepto de clase y objeto
Los programas Java se construyen mediante clases
Una clase representa una definicin de un mdulo de programa
Define datos (atributos)
y define algoritmos (mtodos)
Objetos:
A partir de la clase se pueden crear muchos objetos
Cada uno de ellos se dice que es una instancia de la clase
Cada uno contiene:
- atributos: los definidos en la clase, pero con valores concretos
- mtodos: los definidos en la clase

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 36


UNIVERSIDAD
DE CANTABRIA
Diferencia entre clase y objeto
En la clase se definen las caractersticas comunes de un conjunto de
objetos
Clase
Elefante

Un animal, mamfero, con trompa,


tamao grande, suele tener
colmillos, peso grande,
fecha de nacimiento,...

Define las caractersticas


de todos los elefantes

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 37


UNIVERSIDAD
DE CANTABRIA
Diferencia entre clase y objeto
Las instancias de una clase son objetos concretos que tienen las
caractersticas de la clase y valores concretos de sus datos

Imgenes de Creative Commons por Julielangford y Superjew


Clase
Elefante

Un animal, mamfero, con trompa,


tamao grande, suele tener
colmillos, peso grande,
fecha de nacimiento,...

<<instancia de>> <<instancia de>>

Rose-Tu Cristina

Elefante nacido en el Zoo de Objetos Elefante nacido en Cabrceno


Oregn el 27 de agosto de 2008 el 19 de junio de 2006
pes 129 Kg al nacer,... pes 95 Kg al nacer,...

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 38


UNIVERSIDAD
DE CANTABRIA
Concepto de clase y objeto
Un objeto es un elemento de programa que se caracteriza por:
atributos: son datos contenidos en el objeto, y que determinan su
estado
operaciones o mtodos: son acciones con las que podemos
solicitar informacin del objeto, o modificarla
- Estn compuestas por secuencias de instrucciones que operan con los
atributos
- y pueden invocar operaciones de otros objetos

Ambos, atributos y mtodos, se llaman miembros, y se definen en la


clase
Se intenta siempre corresponder los objetos de un programa con
objetos del problema que ste resuelve

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 39


UNIVERSIDAD
DE CANTABRIA
Ejemplo, crculo que pintamos en una
pantalla
Los crculos se representan con una clase de objetos, y cada objeto es
un crculo concreto
Atributos del crculo:
- el radio
- las coordenadas (X,Y) del centro
- el color
Operaciones a realizar con el crculo:
- crear un crculo nuevo
- pintar el crculo
- cambiar el color
- cambiar el radio
- cambiar las coordenadas del centro
- obtener el radio o el rea

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 40


UNIVERSIDAD
DE CANTABRIA
1.6. Diagrama de Clases
Define Circulo
nombre de la clase
atributos: nombres y tipos -real centroX
-real centroY
mtodos: nombre, parmetros -real radio
(con nombre y tipo de cada uno), y -Color col
+Circulo(real x, real y
valor retornado (tipo) real r, Color col)
- pueden ser constructores, que +cambiaRadio(real r)
inicializan el objeto y se llaman +cambiaCentro(real x, real y)
como la clase +cambiaColor(Color col)
+real radio()
+real area()
+dibuja()

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 41


UNIVERSIDAD
DE CANTABRIA
1.7. Estructura de un programa
Un programa java es un conjunto de clases, donde una de ellas es
especial en dos aspectos
contiene una operacin llamada main
habitualmente no se crean objetos de esta clase
- el sistema operativo invoca el mtodo main al ejecutar el programa

Clase 1 Clase 2 Clase 3 Clase 4

Clase principal

main

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 42


UNIVERSIDAD
DE CANTABRIA
Estructura de una clase
El caso ms sencillo es el de un programa con una sola clase, que tiene
esta estructura:

import clases_importadas;
public class Nombre {
atributos
operaciones
}
Las clases importadas son aquellas pertenecientes a paquetes externos
un paquete es una coleccin de clases
En una clase principal, una de las operaciones se llama main

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 43


UNIVERSIDAD
DE CANTABRIA
1.8. Estructura de un mtodo
Las operaciones o mtodos (como main) tienen la siguiente estructura:
descriptores valor_retornado nombre (argumentos)
{
declaraciones;
instrucciones;
}

Las declaraciones declaran datos (variables o constantes), clases y


objetos que se van a usar en las instrucciones
Las instrucciones representan clculos que se hacen con esos datos.

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 44


UNIVERSIDAD
DE CANTABRIA
Ejemplo de programa
Por ejemplo, el siguiente programa pone un mensaje en la pantalla:

/**
* Programa que pone un mensaje en pantalla
*/
public class Hola {

/**
* Este es el mtodo principal
*/
public static void main(String[] args) {
// No hay declaraciones
System.out.println("Hola, Que tal ests?");
}
}

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 45


UNIVERSIDAD
DE CANTABRIA
Explicacin:
public: el mtodo se puede usar desde fuera
static: el mtodo pertenece a la clase (no a los objetos de la clase)
void: no retorna nada
String[] args: es el argumento, datos que se pasan a la
operacin
System: es una clase predefinida que representa al computador
out: es un objeto de la clase System, predefinido: representa la
pantalla
println: mtodo para poner un texto en la pantalla

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 46


UNIVERSIDAD
DE CANTABRIA
Algunos comentarios
formato libre
sangrado: margen del texto, que se usa para remarcar la estructura
del programa
comentarios de documentacin
- multilnea, con principio y final (/** */)
- recomendable para todas las clases, mtodos y atributos pblicos
comentarios internos
- multilnea, con principio y final (/* */)
- hasta fin de lnea (//)
uso de ";" para finalizar declaraciones e instrucciones
uso de {} para definir los contenidos de clases y mtodos

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 47


UNIVERSIDAD
DE CANTABRIA
Algunos comentarios
nombre de la clase: primera letra con mayscula y dems
minsculas, excepto inicios de palabra
las declaraciones e instrucciones pueden mezclarse en cualquier
orden
- pero es habitual poner primero las declaraciones, y luego las
instrucciones

www.istr.unican.es Michael Gonzlez Harbour y Mario Aldea, 8/mar/16 48


UNIVERSIDAD
DE CANTABRIA

You might also like