programación orientada a objeto (autoguardado) 1

72
REPÚBLICA BOLIVARIANA DE VENEZUELA INSTITUTO UNIVERSITARIO POLITÉCNICO “SANTIAGO MARIÑO” EXTENSIÓN MATURÍN Docente: Realizado por: Ing. Maria Aguilera. Iralix García C:I: 25.782.198 María Castellano C.I: 18.983.058 PROGRAMACIÓN ORIENTADA A OBJETO, FUNDAMENTOS DE PROGRAMACIÓN EN JAVA. (Programación No Numérica I)

Upload: iralix-raquel-garcia-marchant

Post on 12-Apr-2017

230 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: Programación orientada a objeto (autoguardado) 1

REPÚBLICA BOLIVARIANA DE VENEZUELA

INSTITUTO UNIVERSITARIO POLITÉCNICO

“SANTIAGO MARIÑO”

EXTENSIÓN MATURÍN

Docente: Realizado por:

Ing. Maria Aguilera. Iralix García C:I: 25.782.198

María Castellano C.I: 18.983.058

Maturín, Edo Monagas

PROGRAMACIÓN ORIENTADA A OBJETO

PROGRAMACIÓN ORIENTADA A OBJETO, FUNDAMENTOS DE PROGRAMACIÓN EN JAVA.(Programación No Numérica I)

Page 2: Programación orientada a objeto (autoguardado) 1

Orientación a Objeto.

Es una metodología que basa la estructura de los programas en torno a los objetos. Los

lenguajes de POO (programación orientada a objeto) ofrecen medios y herramientas para

describir los objetos manipulados por un programa. Más que describir cada objeto

individualmente, estos lenguajes proveen una construcción (Clase) que describe a un conjunto de

objetos que poseen las mismas propiedades. En esta los programas son representados por un

conjunto de objetos que interactúan. Un objeto engloba datos y operaciones sobre estos datos.

La Programación Orientada a Objetos constituye una buena opción a la hora de resolver un

problema, sobre todo cuando éste es muy extenso. En este enfoque de programación, se facilita

evitar la repetición de código, no sólo a través de la creación de clases que hereden propiedades y

métodos de otras, sino además que el código es reutilizable por sistemas posteriores que tengan

alguna similitud con los ya creados. La (POO) es una metodología de diseño de software y un

paradigma de programación que define los programas en términos de “clases de objetos, objetos

que son entidades que combinan estado (es decir, datos) y comportamiento (esto es,

procedimientos o métodos)

Es un programa con un conjunto de objetos, que se comunican entre ellos para realizar tareas

y que es un modelo que representa un subconjunto del mundo real, tal fielmente como sea

posible, de modo fácil y natural, donde los objetos van a tener características (atributos) y

comportamientos (métodos). Que a diferencia de los lenguajes procedurales, en donde los datos y

los procedimientos se encuentran separados y sin relación alguna. Los lenguajes procedurales,

utilizan funciones y después les pasan datos, en tanto que los lenguajes orientados a objetos

definen objetos y después envían mensajes a los objetos diciendo que realicen alguno de los

métodos especificados para el objeto.

Entre las ventajas de la programación orientada a objetos es que los métodos están

Pensados para hacer programas y módulos más fáciles de escribir, mantener y reutilizar, así como

que sean modulares y reutilizables parte de los códigos de estos programas.

Page 3: Programación orientada a objeto (autoguardado) 1

Objeto.

Es una entidad (tangible o intangible) que posee características y acciones que realiza por sí

solo o interactuando con otros ,Un objeto es una entidad caracterizada por sus atributos propios y

cuyo comportamiento está determinado por las acciones o funciones que pueden modificarlo, así

como también las acciones que requiere de otros objetos. Un objeto tiene identidad e inteligencia

y constituye una unidad que oculta tanto datos como la descripción de su manipulación. Puede

ser definido como una encapsulación y una abstracción: una encapsulación de atributos y

servicios, y una abstracción del mundo real. Para el contexto del Enfoque Orientado a Objetos

(EOO) un objeto es una entidad que encapsula datos (atributos) y acciones o funciones que los

manejan (métodos). También para el EOO un objeto se define como una instancia o

particularización de una clase. Los objetos de interés durante el desarrollo de software no sólo

son tomados de la vida real (objetos visibles o tangibles), también pueden ser abstractos. En

general son entidades que juegan un rol bien definido en el dominio del problema. Un libro, una

persona, un carro, un polígono, son apenas algunos ejemplos de objeto.

Cada objeto puede ser considerado como un proveedor de servicios utilizados por otros objetos

que son sus clientes. Cada objeto puede ser a la vez proveedor y cliente. De allí que un programa

pueda ser visto como un conjunto de relaciones entre proveedores clientes. Los servicios

ofrecidos por los objetos son de dos tipos:

1.- Los datos, que llamamos atributos

2.- Las acciones o funciones, que llamamos métodos

Características Generales Un objeto se identifica por un nombre o un identificador único

que lo diferencia de los demás.

Ejemplo: el objeto

Cuenta de Ahorros número 12345 es diferente al objeto Cuenta de Ahorros número 25789.

En este caso el identificador que los hace únicos es el número de la cuenta.

Un objeto posee estados. El estado de un objeto está determinado por los valores que poseen

sus atributos en un momento dado.

Page 4: Programación orientada a objeto (autoguardado) 1

Un objeto tiene un conjunto de métodos. El comportamiento general de los objetos dentro de

un sistema se describe o representa mediante sus operaciones o métodos. Los métodos se

utilizarán para obtener o cambiar el estado de los objetos, así como para proporcionar un medio

de comunicación entre objetos.

Un objeto tiene un conjunto de atributos. Los atributos de un objeto contienen valores que

determinan el estado del objeto durante su tiempo de vida. Se implementan con variables,

constantes y estructuras de datos (similares a los campos de un registro).

Los objetos soportan encapsulamiento

La estructura interna de un objeto normalmente está oculta a los usuarios del mismo. Los

datos del objeto están disponibles solo para ser manipulados por los propios métodos del objeto.

El único mecanismo que lo conecta con el mundo exterior es el paso de mensajes.

Un objeto tiene un tiempo de vida dentro del programa o sistema que lo crea y utiliza. Para

ser utilizado en un algoritmo el objeto debe ser creado con una instrucción particular (New ó

Nuevo) y al finalizar su utilización es destruido con el uso de otra instrucción o de manera

automática.

Se pueden definir como las unidades básicas de construcción, para la conceptualización,

diseño o programación, esto es que son instancias agrupadas en clases con características en

común y que son los atributos y procedimientos, conocidos como operaciones o métodos se

pueden definir como las unidades básicas de construcción, para la conceptualización, diseño o

programación, esto es que son instancias agrupadas en clases con características en común y que

son los atributos y procedimientos, conocidos como operaciones o métodos En forma más simple

se puede decir que un objeto es un ente que tiene características y comportamiento.

Los objetos pueden modelar diferentes cosas como; dispositivos, roles, organizaciones,

sucesos, ventanas (de Windows), iconos, etc.

Organización de los Objetos

Los objetos forman siempre una organización jerárquica, existiendo varios tipos de

Jerarquía como los que a continuación se mencionan:

Page 5: Programación orientada a objeto (autoguardado) 1

Simples. Cuando su estructura es representada por medio de un árbol (estructura de datos).

Compleja. Cualquier otra diferente a la de árbol. Sea cual fuere la estructura se tienen en ella

los siguientes tres niveles de objetos:

La raíz de la jerarquía. Es un objeto único, está en el nivel más alto de la estructura y se le

conoce como objeto Padre, Raíz o Entidad.

Los objetos intermedios. Son los que descienden directamente de la raíz y que a su vez

tienen descendientes (tienen ascendencia y descendencia) y representan conjuntos de objetos, que

pueden llegar a ser muy generales o muy especializados, de acuerdo a los requerimientos de la

aplicación.

Los objetos terminales. Son todos aquellos que tienen ascendencia, pero que no tienen

descendencia.

Clase.

Es la unidad de modularidad en el EOO. La tendencia natural del individuo es la de clasificar

los objetos según sus características comunes (clase). Por ejemplo, las personas que asisten a la

universidad se pueden clasificar (haciendo abstracción) en estudiante, docente, empleado e

investigador. La clase puede definirse como la agrupación o colección de objetos que comparten

una estructura común y un comportamiento común. Es una plantilla que contiene la descripción

general de una colección de objetos. Consta de atributos y métodos que resumen las

características y el comportamiento comunes de un conjunto de objetos.

Todo objeto (también llamado instancia de una clase), pertenece a alguna clase. Mientras un

objeto es una entidad concreta que existe en el tiempo y en el espacio, una clase representa solo

una abstracción. Todos aquellos objetos que pertenecen a la misma clase son descritos o

comparten el mismo conjunto de atributos y métodos. Todos los objetos de una clase tienen el

mismo formato y comportamiento, son diferentes únicamente en los valores que contienen sus

atributos. Todos ellos responden a los mismos mensajes. Su sintaxis algorítmica es:

Clase

<Nombre de la Clase> Clase

<Nombre de la Clase>;

Page 6: Programación orientada a objeto (autoguardado) 1

Características Generales

Una clase es un nivel de abstracción alto. La clase permite describir un conjunto de

características comunes para los objetos que representa. Ejemplo: La clase Avión se puede

utilizar para definir los atributos (tipo de avión, distancia, altura, velocidad de crucero, capacidad,

país de origen, etc.) Y los métodos (calcular posición en el vuelo, calcular velocidad de vuelo,

estimar tiempo de llegada, despegar, aterrizar, volar, etc.) de los objetos particulares Avión que

representa.

Un objeto es una instancia de una clase. Cada objeto concreto dentro de un sistema es

miembro de una clase específica y tiene el conjunto de atributos y métodos especificados en la

misma

Las clases se relacionan entre sí mediante una jerarquía. Entre las clases se establecen

diferentes tipos de relaciones de herencia, en las cuales la clase hija (subclase) hereda los

atributos y métodos de la clase padre (superclase), además de incorporar sus propios atributos y

métodos.

Ejemplos, Superclase: Clase Avión

Subclases de Avión: Clase Avión Comercial, Avión de Combate, Avión de

Transporte

Los nombres o identificadores de las clases deben colocarse en singular (clase Animal,

clase Carro, clase Alumno).Clases, Superclase y Subclase Es la generalización de un tipo

específico de objetos, esto se puede decir como el conjunto de características (atributos) y

comportamientos de todos los objetos que componen a la clase. Por ejemplo la clase plumón

tiene todas las características (tamaño, color, grosor del punto, etc.) y todos los métodos o

acciones (pintar, marcar, subrayar, etc.), que pueden tener todos los plumones existentes en la

realidad. Un plumón en especial como un marcador permanente para discos compactos (CDS) de

color negro y punto fino, es un objeto (o instancia) de la clase plumón.

Se tienen tres tipos de clase que son:

•Abstracta

Es muy general (ejemplo. Animal).

•Común.

Es intermedia (ejemplo. Mamíferos).

•Final.

Page 7: Programación orientada a objeto (autoguardado) 1

Es muy específica (ejemplo Gato Siamés).

La herencia (que se detallara más adelante), maneja una estructura jerárquica de clases o

estructura de árbol (Estructura de Datos6), con lo que la POO todas las relaciones entre clase se

ajustan a esta estructura. En esta estructura cada clase tiene una sola clase padre, la cual s e

conoce como superclase y la clase hija de una superclase se conoce como subclase.

La superclase, se puede definir en términos sencillos como la clase padre de alguna clase

específica y puede tener cualquier número de subclases.

La subclase, es la clase hija de alguna clase específica y solo puede tener una superclase

(en JAVA).

Mensaje.

Es la petición de un objeto a otro para solicitar la ejecución de alguno de sus métodos o para

obtener el valor de un atributo público. Estructuralmente, un mensaje consta de 3 partes:

Identidad del receptor:

Nombre del objeto que contiene el método a ejecutar.

Nombre del método a ejecutar:

Solo los métodos declarados públicos.

Lista de Parámetros

Que recibe el método (cero o más parámetros)

Su sintaxis algorítmica es:

<Variable_Objeto>

<Nombre_Método> ([<Lista de Parámetros> ] );

Cuando el objeto receptor recibe el mensaje, comienza la ejecución del algoritmo contenido

dentro del método invocado, recibiendo y/o devolviendo los valores de los parámetros

correspondientes, si los tiene ya que son opcionales: ( [ ] ) mensajes En la programación

orientada a objetos, los objetos descritos anteriormente se comunican a través de señales o

mensajes, siendo estos mensajes los que hacen que los objetos respondan de diferentes maneras,

Page 8: Programación orientada a objeto (autoguardado) 1

por ejemplo un objeto en Windows como una ventana de alguna aplicación , puede cerrarse,

maximizarse o restaurarse (métodos) de acuerdo al mensaje que le sea enviado.

En otras palabras, un mensaje es una comunicación dirigida a un objeto, que le ordena

que ejecute uno de sus métodos pudiendo o no llevar algunos parámetros

.

Principios que rigen la orientación a objeto.

Los principios fundamentales de la POO son: abstracción, encapsulamiento, herencia y

polimorfismo, los cuales se describirán a continuación.

Abstracción

“Abstraer es suprimir u ocultar algunos detalles de un proceso o de un elemento, para

resaltar algunos aspectos, detalles o estructuras “Ocultar parte de la información es una omisión

voluntaria de detalles en el desarrollo de un programa o una representación abstracta La

abstracción es la forma en que nuestra mente modela la realidad, formándolos objetos. Por eso se

crea objetos en los programas que simulen los comportamientos de los objetos del mundo real.

Nosotros no pensamos en las cosas que vemos como la unión de sus componentes más pequeños;

no vemos un carro como el conjunto de llantas, motor, asientos, timón, espejos, etc., sino que lo

vemos como la entidad compleja que es, en eso se basa la abstracción. No nos interesa conocer

los detalles de cada uno de sus componentes o qué es lo que hace cada parte, simplemente porque

nos basta conocer el carro o el objeto superficialmente, con tal que podamos interactuar con él y

al hacerlo obtengamos una respuesta para satisfacer nuestra necesidad; como desplazarnos

rápidamente de un lugar otro, ante esta solicitud, el carro responde realizando el movimiento.

Cada objeto en el sistema puede realizar trabajos, informar y "comunicarse “con otros objetos en

el sistema sin revelar cómo se está implementado. Los procesos, las funciones o los métodos

pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para

ampliar una abstracción.

La abstracción humana se realiza de manera jerárquica. Cada sistema se va dividiendo en

sistemas más pequeños hasta ir llegando a los niveles más simples, de esta forma se nos presenta

una realidad mucho más ordenada y entendible. Ésta es la forma de pensar de la P.O.O.

Page 9: Programación orientada a objeto (autoguardado) 1

Existen niveles en la abstracción, que son:

-Comunidad de objetos que interactúan: Hay líneas de comunicación y cooperación

-Agrupación de objetos que trabajan juntos en una unidad: Se van formando los Paquetes

(en caso de Java)

-Interacción cliente-servidor: Los objetos se proporcionan servicios

Es el proceso de representar entidades reales como elementos internos a un programa,

la abstracción de los datos es tanto en los atributos, como en los métodos de los objetos. Es de

hacer notar que por medio de la abstracción se puede tener una visión global del tema, por

ejemplo en la clase PILA (Estructura de Datos, Ultimas Entradas Primeras Salidas LIFO), se

pueden definir objetos de este tipo, tomando únicamente las propiedades LIFO (del inglés Last

Input First Output) de las PILAS, algunos atributos como lleno, vacío, el tamaño y las

operaciones o métodos que se pueden realizar sobre estos objetos como PUSH (meter un

elemento) o POP (retirar un elemento) y no es necesario que el programador conozca o sea un

experto en la Estructura de Datos con la que se implementa la PILA (como por ejemplo con una

organización contigua o simplemente ligada, ni de los algoritmos que realizan el PUSH y el

POP).

Un beneficio de la programación orientada a objetos es que retira al usuario del requisito

de saber cómo funcionan otros códigos. Este beneficio, llamado abstracción, significa que el

usuario implementando un objeto creado por otro programador para realizar una tarea en

particular no necesita saber cómo completa ese objeto su tarea. De esta forma, el usuario se puede

concentrar en sus propios problemas, en lugar de preocuparse por la implementación de un objeto

que podría querer utilizar. Esto permite a los programadores construir software más grandes y

más complejos sobre objetos más pequeños

Shaw define abstracción como “una descripción simplificada o especificación de un

sistema que enfatiza algunos de los detalles o propiedades del mismo mientras suprime otros.

Una buena abstracción es aquella que enfatiza detalles significativos al lector o usuario y suprime

detalles que son, al menos por el momento, irrelevantes o causa de distracción”.

La abstracciones una técnica de programación que permite definir nuevos tipos de datos por el

usuario. La esencia de la abstracción es similar al uso de un tipo de dato de un lenguaje de

programación, cuyo uso se realiza sin saber cómo está representado o implementado. Una

Page 10: Programación orientada a objeto (autoguardado) 1

abstracción se centra en la vista externa de un objeto, de modo que sirva para separar el

comportamiento esencial de un objeto de su implementación. Definir una abstracción significa

describir una entidad del mundo real, no importa lo compleja que pueda ser, y a continuación

utilizar esta descripción en un programa. El uso de un objeto por vía de su especificación como

tipo abstracto o clase abstracta significa que, si su aspecto interno experimenta modificaciones,

otras partes del sistema no se verán afectadas.

Un método abstracto es, como vimos, un método que declara una funcionalidad que debe

ser implementada en todas las clases derivadas de la clase en que se vaya a utilizar. En otras

palabras, a través de un método indicamos lo que deberían poder hacer los objetos de dichas

subclases. No se implementa en la clase base, sino que cada subclase debe tener su propia

implementación

Encapsulamiento

Cuando se escriben clases, una buena práctica de programación orientada a objetos

requiere que los programadores "encapsulen" datos lejos de usuario del objeto. Esto significa que

cualquier dato o función dentro de una clase no debe estar accesible para el usuario sin una

modificación del programador. Un buen ejemplo son las funciones de "obtener" y "configurar"

incluidas en la mayoría de las clases. Estas funciones controlan la forma en que el usuario puede

ingresar a las variables de datos en un objeto, y aseguran que todos los datos se pueden

considerar legitimados para el uso. Esto limita la preocupación sobre los datos corrompidos, o la

manipulación ilegal de datos por parte del usuario.

Polimorfismo

El polimorfismo está unido a la herencia, porque es la forma en la que un objeto que

hereda de otro objeto interactúa con ese objeto "base". Por ejemplo, el objeto profesor puede

heredar ciertas funciones de su objeto base (persona), pero cambiar una de ellas. El objeto

profesor aún puede utilizar las funciones de clase base junto con su propia versión de la función

que cambia. Incluso, durante la ejecución de un programa el usuario puede declarar una variable

para retener un objeto de persona, pero posteriormente al programa decide que necesita un objeto

profesor más específicamente. En este caso, la variable separada para el objeto persona puede

sostener a un objeto de profesor, porque el profesor hereda de (o es) un objeto persona.

Page 11: Programación orientada a objeto (autoguardado) 1

El polimorfismo consiste en la posibilidad de aplicar una misma operación sobre distintos

objetos, y que esta operación varíe según el objeto al que se le aplique. Esto sucede en tiempo de

ejecución, NO en tiempo de compilación, por lo que el polimorfismo está íntimamente ligado al

enlace dinámico, como se verá a continuación.

La operación suele ser un método. Los objetos a los que se les puede aplicar este método

están limitados por herencia: ese método se define en una clase y es aplicable, con los

refinamientos subsiguientes, a todas sus subclases. Al proceso de seleccionar el método

apropiado según la clase del objeto se llama ligadura o enlace.Si ésta tiene que aplazarse

obligatoriamente hasta el tiempo de ejecución, el mensaje supone un enlace dinámico (también

conocido como tardío). Es decir, si todos los objetos son asociados estáticamente a una clase, y

no se tiene en cuenta los posibles cambios de referencia, el método a aplicar puede determinarse

en tiempo de compilación, sin que el sistema sufra ningún tipo de sobrecarga. Sin embargo, en la

mayoría de los casos, es interesante que los cambios de referencia producidos en tiempo de

ejecución influyan en el cómputo.

La ligadura estática significa que se fijan los tipos de todas las variables y expresiones en

tiempo de compilación; la ligadura (o enlace) dinámica (también llamada ligadura tardía) se

produce cuando no es posible conocer la clase del objeto hasta el tiempo de ejecución. La

ligadura dinámica es la capacidad de retrasar hasta el instante de la recepción del mensaje la

decisión sobre la clase del objeto que lo recibe y el método concreto que debe de ejecutarse.

Ejemplo de su estructura:

// ... clases Figura, Rectángulo y Círculo

public class

Ppal {public static void

main(String[] args)

{Figura f; int opcion = pideOpcionAlUsuario();

if ( opcion == 1 )

f = new Rectangulo(5, 10);

else f = new Circulo(5);

// ? (50 o 78,5)

System.out.println( “Área: “ + f.calculaArea() );

Page 12: Programación orientada a objeto (autoguardado) 1

}

}

Esta propiedad es una poderosa herramienta para simplificar el diseño de aplicaciones,

pero hay que tratarla con precaución. El error más común provocado por el uso del polimorfismo

es que, en un afán de simplificar, si se utilizan siempre los mismos nombres en las operaciones,

se desvirtúa realmente el nombre del operador. La gran ventaja del polimorfismo es permitir la

realización de las clases que definen un programa de forma totalmente independiente al programa

donde se utilizan. Sólo será necesario definir cuidadosamente las clases abstractas. El

polimorfismo facilita la reutilización de software, haciendo posible implementar software

genérico que se pueda aplicar no sólo a objetos existentes, sino también a objetos que sean

añadidos en etapas futuras del desarrollo

Conceptos erróneos sobre

Polimorfismo En algunos lenguajes OOP esta propiedad es confundida, erróneamente,

con otra conocida como operador overloading (sobrecarga de operadores), que permite la

redefinición de operadores como “+”, “-", ... Otro concepto asociado erróneamente al

polimorfismo es la method overloading o sobrecarga de métodos es decir, varios métodos que

tienen el mismo nombre, pero el número de parámetros o los tipos de la lista de parámetros es

distinto. Tanto la sobrecarga de métodos como de operadores no es más que una riqueza

sintáctica extra: en realidad, las llamadas a los métodos son enlazados en tiempo de compilación

(ligadura o enlace estático) al método concreto que ofrece los argumentos en número y tipo igual

a los de la llamada. En cualquier caso, si se desea considerar como polimorfismo, es un tipo de

polimorfismo estático, y no es lo que se entiende habitualmente por este término

Herencia.

Otro beneficio de la programación orientada a objetos es la herencia, que también permite

a los programadores construir programas más complejos desde partes más simples. La herencia

es la forma en que los objetos "heredan" su funcionalidad de otros objetos, acomodándolas para

sus necesidades. Por ejemplo, un objeto "profesor" puede heredar su funcionalidad a un objeto

"persona", porque el profesor es una persona y requiere toda la funcionalidad del objeto persona

Page 13: Programación orientada a objeto (autoguardado) 1

(junto con las funciones adicionales de un profesor). De esta forma, el programador del objeto

profesor no tiene que volver a reescribir el objeto de persona para utilizarlo, simplemente puede

dejar que el objeto profesor herede sus funciones del objeto de persona.

La herencia designa la facultad de los objetos de compartir propiedades y operaciones

entre ellos. Como la herencia humana, existen unas determinadas clases hijo que heredan las

propiedades y atributos de otras clases padres Desde un punto de vista de implementación, se

trata de crear nuevas clases de objetos a partir de otras ya existentes, es decir, de reutilizar el

comportamiento de una clase en la definición de otras nuevas. Cualquier clase hereda la

declaración de los atributos y los métodos de su superclase, pudiendo estas subclases

especializarse añadiendo una declaraciones de atributos adicionales y declaraciones de métodos

propios o incluso cambiando los atributos y métodos heredados Una de las razones para emplear

la herencia es que permite la reutilizacióndel código de proyectos anteriores, permitiendo la

modificación (o especialización) de aquellos aspectos que no concuerden exactamente con las

necesidades de nuestra aplicación.

En las jerarquías que establecen las relaciones de herencia, a medida que descendemos de

nivel, cada nivel aporta un grado más de especialización sobre el nivel inmediatamente superior.

En cambio, si partimos del nivel de clases inferiores hacia los niveles superiores, cada nivel

supone una generalización del nivel inmediatamente inferior.

Herencia Simple

Se produce cuando la clase que recibe la herencia tiene un sólo padre De atributos: Los

atributos de una clase son heredadas automáticamente por todos sus descendientes. Esto quiere

decir que un objeto tiene propiedades de su clase y propiedades de las clases heredadas. Los

atributos deben definirse en las clases tan cercanas a las clases terminales de la jerarquía como

sea posible. En los niveles superiores de la jerarquía normalmente no existe suficiente

información como para que puedan decidirse unos atributos u otros, mientras que las clases

terminales ya representan entidades más concretas. De métodos.

La herencia de los métodos permite aumentar la reutilización de software y simplifica, por

tanto, el diseño. Además, facilita la programación, reduce redundancias y simplifica la corrección

Page 14: Programación orientada a objeto (autoguardado) 1

de los programas. Los métodos deben situarse tan elevados en la jerarquía de clases como sea

posible, aunque puedan ser abstractos (es decir, sin incluir código). De esta forma se facilita la

abstracción, al poder establecer métodos comunes a varias clases.ejemplo de su estructura en

lenguaje de programación.

public class Persona {private String nombre; public Persona(String n)

{nombre = n;}public String getNombre() {return nombre;}}

public class Estudiante extends Persona { private String titulacion; public

Estudiante(String n, String t) { super ( n ); // Llama al constructor de Persona titulacion =

t;

}publicString getTitulacion(){ return titulacion;}public

String toString(){return

getNombre() + “, “ + titulacion;} }

Un programa en Java en el que la clase estudiante hereda de la clase persona. La herencia

se indica en Java con la palabra clave extensa Aquellas clases que no heredan explícitamente de

ninguna clase lo hacen de Object, ejemplo de cómo seria

public class Ppal {public static void main(String[] args){

Estudiante est1; est1 = new Estudiante(“Paula”,”Ingeniera Informatica”);

System.out.println(est1); // llama a “toString”

System.out.println( est1.getNombre() );}

Herencia Múltiple

Se produce cuando el objeto que hereda tiene más de un padre o alguno de sus

antepasados tiene varios padres. La herencia múltiple ofrece la posibilidad de definir clases

híbridas que comparten los miembros de dos o más clases predefinidas. Es difícil de encontrar en

los lenguajes OO, ya que para determinar si un objeto hereda un miembro puede que haya que

seguir caminos por más de un padre. Pueden darse conflictos debidos a que un objeto herede la

misma propiedad o método de dos objetos situados al mismo nivel o a distinto nivel (colisión de

nombres). Este tipo de situaciones se da cuando una clase hereda 2 o más versiones de un método

Page 15: Programación orientada a objeto (autoguardado) 1

provenientes de los distintos ancestros, y es inevitable en el caso de la herencia repetida, que se

produce cuando una clase hereda de otras que a su vez heredan de una clase común.

En cualquier caso, esta herencia suele producir los conflictos conocidos como colisión de

nombres. Sucede cuando el nombre de un método o atributo existe en más de una clase de nivel

superior Java no permite herencia múltiple. La herencia siempre es simple, aunque permite la

implementación de múltiples interfaces. Los interfaces son clases que sólo contienen métodos

abstractos. Se pueden distinguir otros dos tipos de herencia:

Herencia selectiva (o parcial) que permite decidir qué métodos se heredan y cuáles no.

Esto complica sintácticamente la definición de una clase, lo que hace que sean pocos los

lenguajes que la adoptan.

Herencia no selectiva que fuerza a que todos los atributos y métodos sean heredados. Esta

es la más utilizada, incluyendo lenguajes como C++, Java o C#. Ejemplo.

Class Profesor {privateString nombre;

Public Profesor(String n) {nombre = n;}

Public String getNombre(){

Return nombre;}}interface Investigador {

Public String getCampoInvestigacion();}

Class ProfesorUniversitario extends Profesor implements Investigador {

Private String investigacion;

Public ProfesorUniversitario(String n, String i){ super ( n ); // Constructor de Profesor

investigacion = i;}

public String getCampoInvestigacion(){

return investigacion;}}

Page 16: Programación orientada a objeto (autoguardado) 1

Fundamentos de programación en Java.

Historia de Java.

Java Es un lenguaje de programación de alto nivel, orientado a objetos, el cual tiene la

capacidad de ser ejecutado en una gran cantidad de dispositivos y electrodomésticos ya que este

fue el fin para el cual fue creado, en su mayor parte la sintaxis de Java está influenciada por el

popular lenguaje C y por Visual BASIC, aunque deja de lado algunas características de bajo nivel

que tiene C como son el manejo de memoria y los apuntadores (punteros). Para las gestiones de

manejo de memoria Java utiliza Algo llamado Recolector de Basura (garbaje collector) el cual se

encarga de limpiar la memoria.

Java posee todas las características del paradigma de la programación orientada a objetos

herencia, encapsulamiento, abstracción, polimorfismo, modularidad entre otras. Tiene también

todas las estructuras de control y bifurcaciones que poseen la mayoría de lenguajes, while, do

while, if , else-if-else básicamente las posee todas , esto lo veremos con más detalles en los

siguientes post.

Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-

box en una pequeña operación denominada the Green Project en Sun Microsystems en el año

1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling,

trabajó durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo. El lenguaje se

denominó inicialmente Oak (por un roble que había fuera de la oficina de Gosling), luego pasó a

denominarse Green tras descubrir que Oak era ya una marca comercial registrada para

adaptadores de tarjetas gráficas y finalmente se renombró a Java.

El término Java fue acuñado en una cafetería frecuentada por algunos de los miembros del

equipo. Pero no está claro si es un acrónimo o no, aunque algunas fuentes señalan que podría

Page 17: Programación orientada a objeto (autoguardado) 1

tratarse de las iniciales de sus creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim.

Otros abogan por el siguiente acrónimo, Just Another Vague Acronym (“sólo otro acrónimo

ambiguo más”). La hipótesis que más fuerza tiene es la que Java debe su nombre a un tipo de

café disponible en la cafetería cercana, de ahí que el icono de java sea una taza de café caliente.

Un pequeño signo que da fuerza a esta teoría es que los 4 primeros bytes (el número mágico) de

los archivos. class que genera el compilador, son en hexadecimal, 0xCAFEBABE. A pesar de

todas estas teorías, el nombre fue sacado al parecer de una lista aleatoria de palabras.

Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una

estructura y sintaxis similar a C++. Entre junio y julio de 1994, tras una sesión maratoniana de

tres días entre John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric Schmidt, el

equipo reorientó la plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic,

propiciaría que Internet se convirtiese en un medio interactivo, como el que pensaban era la

televisión por cable. Naughton creó entonces un prototipo de navegador, WebRunner, que más

tarde sería conocido como HotJava.

En 1994, se les hizo una demostración de HotJava y la plataforma Java a los ejecutivos de

Sun. Java 1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo

de 1995, durante las conferencias de SunWorld, a que vieran la luz pública Java y HotJava, el

navegador Web. El acontecimiento fue anunciado por John Gage, el Director Científico de Sun

Microsystems. El acto estuvo acompañado por una pequeña sorpresa adicional, el anuncio por

parte de Marc Andreessen, Vicepresidente Ejecutivo de Netscape, de que Java sería soportado en

sus navegadores. El 9 de enero del año siguiente, 1996, Sun fundó el grupo empresarial JavaSoft

para que se encargase del desarrollo tecnológico.  Dos semanas más tarde la primera versión de

Java fue publicada.

La promesa inicial de Gosling era Write Once, Run Anywhere (Escríbelo una vez, ejecútalo

en cualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de

ejecución (la JVM) ligero y gratuito para las plataformas más populares de forma que los binarios

(bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma. El entorno de

ejecución era relativamente seguro y los principales navegadores web pronto incorporaron la

posibilidad de ejecutar applets Java incrustadas en las páginas web.

Page 18: Programación orientada a objeto (autoguardado) 1

Java ha experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como

un enorme incremento en el número de clases y paquetes que componen la biblioteca estándar.

Page 19: Programación orientada a objeto (autoguardado) 1

JDK.

Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la

creación de programas en Java. Puede instalarse en una computadora local o en una unidad de

red. es la Plataforma de Desarrollo JAVA. Se trata de la suma de todo lo que contiene la JRE

(Java Runtime Environment) más una serie de herramientas de desarrollo como un compilador,

debugger, compactador, documentador, etc. necesarios para desarrollar applets y aplicaciones de

escritorio. En la JDK también se encuentran herramientas de seguridad y de despliegue de

aplicaciones.

Componentes del JDK

JDK consta de una serie de aplicaciones y componentes, para realizar cada una de las

tareas de las que es capaz de encargarse.

A continuación se explican más en profundidad cada uno de ellos, así como su sintaxis,

indicando entre corchetes aquellos elementos que sean opcionales. Todos los programas permiten

la inclusión de una serie de opciones sobre su ejecución antes del primer argumento. Estas

opciones se indican precedidas de un menos (-):

Programa -opcion1 -opcion2 Parametro1

Todas las opciones que los ejecutables del JDK presentan se muestran llamando al

programa sin parámetros o con las opciones -? o -help:

Programa

programa –help

Programa -?

JRE.

Java Runtime Environment o JRE es un conjunto de utilidades que permite la ejecución de

programas Java. El JRE es una máquina virtual de Java y su función es hacer de intermediario

entre una aplicación programada en Java y el sistema operativo que se esté usando. De este

modo, cualquier aplicación puede funcionar en cualquier sistema operativo que disponga del

JRE. Área de almacenamiento de la consola de Java que, en ocasiones, se debe borrar de forma

manual para permitir la carga e instalación de la última versión de Java Componentes

En su forma más simple, el entorno en tiempo de ejecución de Java está conformado por

una Máquina Virtual de Java o JVM, un conjunto de bibliotecas Java y otros componentes

Page 20: Programación orientada a objeto (autoguardado) 1

necesarios para que una aplicación escrita en lenguaje Java pueda ser ejecutada. El JRE actúa

como un "intermediario" entre el sistema operativo y Java.

La JVM es el programa que ejecuta el código Java previamente compilado (bytecode)

mientras que las librerías de clases estándar son las que implementan el API de Java. Ambas

JVM y API deben ser consistentes entre sí, de ahí que sean distribuidas de modo conjunto.

Un usuario sólo necesita el JRE para ejecutar las aplicaciones desarrolladas en lenguaje

Java, mientras que para desarrollar nuevas aplicaciones en dicho lenguaje es necesario un entorno

de desarrollo, denominado JDK, que además del JRE (mínimo imprescindible) incluye, entre

otros, un compilador para Java.

Compilador en Java.

Un compilador es un programa informático que traduce un programa escrito en un lenguaje

de programación a otro lenguaje de programación. Usualmente el segundo lenguaje es lenguaje

de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este

proceso de traducción se conoce como compilación. El primer compilador auto contenido, es

decir, capaz de compilar su propio código fuente fue el creado para Lisp por Hart y Levin en el

MIT en 1962. Desde 1970 se ha convertido en una práctica común escribir el compilador en el

mismo lenguaje que este compila, aunque Pascal y C han sido alternativas muy usadas.

La construcción de un compilador involucra la división del proceso en una serie de fases que

variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del

programa fuente y la síntesis del programa objeto.

Análisis: Se trata de la comprobación de la corrección del programa fuente, e incluye las fases

correspondientes al Análisis léxico (que consiste en la descomposición del programa fuente en

componentes léxicos), análisis sintáctico (agrupación de los componentes léxicos en frases

gramaticales) y análisis semántico (comprobación de la validez semántica de las sentencias

aceptadas en la fase de análisis sintáctico).

Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar

formado por una o varias combinaciones de fases de generación de código (normalmente se trata

Page 21: Programación orientada a objeto (autoguardado) 1

de código intermedio o de código objeto) y de optimización de código (en las que se busca

obtener un código lo más eficiente posible).

Alternativamente, las fases descritas para las tareas de análisis y síntesis se pueden

agrupar en Front-end y Back-end:

Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol

de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de

la plataforma o sistema para el cual se vaya a compilar, y está compuesta por las fases

comprendidas entre el análisis Léxico y la generación de código intermedio.

Back-end: es la parte que genera el código máquina, específico de una plataforma, a

partir de los resultados de la fase de análisis, realizada por el Front End.

Esta división permite que el mismo Back End se utilice para generar el código máquina de

varios lenguajes de programación distintos y que el mismo Front End que sirve para analizar el

código fuente de un lenguaje de programación concreto sirva para generar código máquina en

varias plataformas distintas. Suele incluir la generación y optimización del código dependiente de

la máquina.

La función de un compilador es convertir un programa escrito un en lenguaje como Java a

un lenguaje que la computadora pueda entender. Los programas en Java se convierten en códigos

de bytes. El comando para llamar al compilador es: javac MiPrograma.java Donde el nombre del

compilador es javac y MiPrograma.java es el nombre del archivo que contiene el código de

nuestro programa. Al compilar el programa, el compilador verifica que éste obedezca las reglas

de programación en Java, y si algo sale mal, muestra los mensajes de error apropiados. El

compilador crea un archivo con el sufijo .class. Este contiene el código de bytes equivalente a su

programa en Java.

Tipos de compiladores

Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber

compiladores que se adscriban a varias categorías:

Compiladores cruzados: generan código para un sistema distinto del que están funcionando.

Page 22: Programación orientada a objeto (autoguardado) 1

Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero

manteniendo la funcionalidad del programa original.

Compiladores de una sola pasada: generan el código máquina a partir de una única lectura

del código fuente.

Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder

producir el código máquina.

Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del

código según se necesitan.

Pauta de creación de un compilador: En las primeras épocas de la informática, el software

de los compiladores era considerado como uno de los más complejos existentes.

Los primeros compiladores se realizaron programándolos directamente en lenguaje

máquina o en ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas

versiones del compilador (u otros compiladores distintos) en el lenguaje que compila ese

compilador.

Actualmente existen herramientas que facilitan la tarea de escribir compiladores ó

intérpretes informáticos. Estas herramientas permiten generar el esqueleto del analizador

sintáctico a partir de una definición formal del lenguaje de partida, especificada normalmente

mediante una gramática formal y barata, dejando únicamente al programador del compilador la

tarea de programar las acciones semánticas asociadas.

Máquina Virtual de Java.

La Máquina Virtual Java (JVM) es el entorno en el que se ejecutan los programas Java, su

misión principal es la de garantizar la portabilidad de las aplicaciones Java. Hablábamos que uno

de las principales características de JAVA tuvo con su concepción de “escribir solo una vez y

ejecutar en cualquier lugar” y para lograr esa independencia de los programas Java, sobre el

sistema operativo y el hardware en que se ejecutan es donde toma importancia la Máquina Virtual

JAVA o Java Virtual Machine o simplemente JVM.

Si función es amplia pero podemos señalar que entre sus tareas está proporcionar la vista de

un nivel de abstracción superior, permitiendo la independencia de la plataforma. Se denomina

Page 23: Programación orientada a objeto (autoguardado) 1

máquina virtual porque "crea" una computadora virtual que establece las instrucciones

(bytecodes) que esta computadora puede ejecutar. El intérprete Java específico ejecuta las

instrucciones que se guardan en los archivos cuya extensión es .class. Las tareas principales de la

JVM son las siguientes:

Reservar espacio en memoria para los objetos creados

Liberar la memoria no usada (garbage collection).

Asignar variables a registros y pilas

Llamar al sistema huésped para ciertas funciones, como los accesos a los dispositivos

Vigilar el cumplimiento de las normas de seguridad de las aplicaciones Java

La protección de la máquina virtual se realiza por medio del verificador de bytecode, el

cual intenta asegurar el rechazo de aquellos programas en bytecode que no satisfagan las

definiciones asumidas por la optimización de Java, sobre todo en cuanto a direccionamiento.

Asimismo, cuando se trata de proteger el procesador real, el sistema descansa en la posibilidad de

traducción hecha directamente por el ambiente de ejecución de Java, donde se obtiene un código

nativo bien definido para la máquina.

La JVM fue diseñada para proveer ejecutables en un tipo de plataforma ejecutable

estándar. Originalmente fue construida en una sola plataforma - hoy en día varios fabricantes

ofrecen distintas construcciones de la JVM, ver enlaces al final - con lo cual sólo puede ofrecer

un tipo de aplicaciones compiladas en un código nativo. Los beneficios aparecen en la cantidad

de plataformas que ofrecen el ambiente de ejecución Java. Algunas de los ambientes de operación

en los que la JVM y el ambiente de ejecución están disponibles hoy son:

AS/400

AIX

Amiga

FreeBSD

HP

Page 24: Programación orientada a objeto (autoguardado) 1

Linux

Macintosh

MP-RAS

NeXT

OS/2

Solaris

Windows 95

Windows NT

Decir que la JVM es un intérprete que convierte el ByteCode compilado de Java en el

código de máquina nativo en que debería ejecutarse no es totalmente falso, pero es más correcto

decir que es un emulador de la ejecución de un código nativo. La tecnología de máquinas

virtuales se ha distinguido de la tecnología de interpretación básicamente por el nivel en que se

realiza la interpretación. Los intérpretes trasladan un "código de bit" nativo directamente a

llamadas del sistema o instrucciones de máquina, pero la emulación consiste en permitir una

arquitectura de máquina intermedia.

La arquitectura de la JVM se basa en el concepto de una implementación que no es

específica de una máquina. Esto es, la arquitectura misma no asume nada acerca de la máquina o

de las características físicas y de construcción sobre la cual es implementada. De esta manera, la

Page 25: Programación orientada a objeto (autoguardado) 1

JVM es una entidad autónoma e única que ejecuta los archivos de clases. La JVM se separa en

cinco unidades de funcionalidad distintas, las que se dedican a la tarea de ejecutar los archivos de

clases.

Anatomía de un Programa en Java.

Un programa describe cómo un ordenador debe interpretar las órdenes del Programador para

que ejecute y realice las instrucciones dadas tal como están escritas. Un programador utiliza los

elementos que ofrece un lenguaje de programación para diseñar programas que resuelvan

problemas concretos o realicen acciones bien definidas. El siguiente programa Java muestra un

Mensaje en la consola con el texto

“Hola Mundo”.

/*

* Este programa escribe el texto "Hola Mundo" en la consola

* utilizando el método System.out.println()

*/

public class HolaMundo {

public static void main (String[] args) {

System.out.println("Hola Mundo");

}

}

La estructura de un programa Java En este programa se pueden identificar los siguientes

elementos del lenguaje Java: comentarios, definiciones de clase, definiciones de método y

sentencias. Comentario. El programa comienza con un comentario. El delimitador de inicio de un

comentario es /* y el delimitador de fin de comentario es */. El texto del primer comentario de

este ejemplo sería: ‘Este programa escribe el texto “Hola Mundo” en la consola utilizando el

método System.out.println()'. Los comentarios son ignorados por el compilador y solo son útiles

para el programador. Los comentarios ayudan a explicar aspectos relevantes de un programa y lo

hacen más legible. En un comentario se puede escribir todo lo que se desee, el texto puede ser de

una o más líneas.

Estructura de un programa Java Definición de clase

. La primera línea del programa, después del primer comentario. Define una clase que se

Llama HolaMundo

Page 26: Programación orientada a objeto (autoguardado) 1

. La definición de la clase comienza por el carácter { y termina con el carácter }. El

nombre de la clase lo define el programador.

Definición de método

. Después de la definición de clase se escribe la definición del método main()

. Todos los programas Java deben incluir un método main()

. Este método indica las sentencias a realizar cuando se ejecuta un programa.

Un método es una secuencia de sentencias ejecutables. Las sentencias de un método

quedan delimitadas por los caracteres {y} que indican el inicio y el fin del método,

respectivamente.

Sentencia

. Dentro del método main()se incluye una sentencia para mostrar un texto por la consola.

Los textos siempre se escriben entre comillas dobles para diferenciarlos de otros elementos del

lenguaje. Todas las sentencias de un programa Java deben terminar con el símbolo punto y coma.

Este símbolo indica al compilador que ha finalizado una sentencia. Una vez que el programa se

ha editado, es necesario compilarlo y ejecutarlo para comprobar si es correcto. Al finalizar el

proceso de compilación, el compilador indica si hay errores en el código Java, dónde se

encuentran y el tipo de error que ha detectado: léxico, sintáctico o semántico. /* Este programa

calcula el perímetro de una circunferencia */

public class PerimetroCircunferencia {

public static void main (String[] args) {

// declaración de PI y la variables radio y perimetro

final double PI = 3.1415926536;

double radio = 25.0, perimetro;

perimetro = 2.0*PI*radio;

System.out.print("El perimetro de la circunferencia de radio ");

System.out.print(radio);

System.out.print(" es ");

System.out.print(perimetro);

}

}

Page 27: Programación orientada a objeto (autoguardado) 1

En un programa Java las sentencias se ejecutan secuencialmente, una detrás de otra en el

orden en que están escritas. En este ejemplo se puede ver que dentro del método main() se

incluye un comentario de una sola línea que comienza con //. A continuación se declaran las

variables PI, radio y perímetro, todas ellas de tipo doubleporque almacenan números reales.

PI representa un valor constante, por lo que es necesario utilizar el delimitador Final y

asignarle el valor 3.1415926536 correspondiente al número pi.

Después de las declaraciones, se asigna el valor 25.0 a la variable radio y se calcula el

Perímetro. Finalmente, se muestra el resultado del cálculo del perímetro para una circunferencia

de radio 25.

En este ejemplo se utilizan variables numéricas de tipo double

. Cada variable almacena un número real. La parte entera del número se separa de los

decimales con un punto, no con una coma. Esta es una característica de Java que se debe tener en

cuenta, de lo contrario, el compilador no entiende que se trata de un número real. El valor 25.0

almacenado en la variable radio es una magnitud para la que no se indican sus unidades. El

programador es responsable de que los cálculos se realicen correctamente y de realizar la

conversión de unidades cuando sea necesario. Para escribir un mensaje por la consola se utilizan

los métodos System.out.print() y System.out.println()

. Para escribir un mensaje sin saltar a la línea siguiente se utiliza System.out.print(),

System.out.println()escribe un mensaje y da un salto de línea. ¿Qué hace el siguiente código

Java?

System.out.print("Hola");

System.out.print(" ");

System.out.print("Mundo");

En este ejemplo se escribe el texto “Hola Mundo” en la consola.

Hola Mundo

¿Qué pasaría si se omitiera la segunda línea de código?,

System.out.print("Hola");

System.out.print("Mundo");

En este caso se escribiría “HolaMundo” sin el espacio de separación entre las dos

palabras. HolaMundo Si en vez de utilizar el método System.out.print() se utiliza el método

Page 28: Programación orientada a objeto (autoguardado) 1

System.out.println(), entonces el mensaje se escribe en dos líneas distintas.

System.out.println("Hola"); System.out.println("Mundo");

En este ejemplo, se escribiría “Hola” y “Mundo” en dos líneas. Hola

Mundo Combinando el uso de los métodos System.out.print() y System.out.println() se puede

escribir cualquier mensaje en la consola saltando de línea cuando sea necesario. Además, ambos

métodos permiten utilizar el operador + para concatenar textos.

El siguiente código Java escribe “Hola Mundo” en la consola.

System.out.print ("Hola");

System.out.print (" ");

System.out.print ("Mundo");

En este caso se ejecutan tres métodos System.out.print ()

. Este código se puede simplificar utilizando un solo método

System.out.print () y el operador + para concatenar los textos “Hola”, “” y “Mundo”.

System.out.print ("Hola" + " " + "Mundo"); También se puede escribir directamente el mensaje

“Hola Mundo”. El resultado es el mismo y el código es más claro. System.out.print ("Hola

Mundo"); Para mostrar por la consola un texto seguido del valor almacenado de una variable se

puede ejecutar dos veces el método System.out.print ():

System.out.print ("El primero es ");

System.out.print (perimetro);

Este código se puede simplificar utilizando el operador + para concatenar el texto “El

perímetro es” con el valor almacenado en la variable perímetro.

System.out.print ("El perímetro es " + perímetro); En ambos casos el resultado es el mismo. Por

ejemplo, si el valor almacenado en el variable perímetro fuera 157.08 la salida por la consola

sería: El perímetro es 157.08

Entorno de desarrollo integrado (IDE.)en Java.

Los IDE (Integrated Development Environment) son un conjunto de herramientas para el

programador, que suelen incluir en una misma suite, un buen editor de código, administrador de

proyectos y archivos, enlace transparente a compiladores y debuggers e integración con sistemas

controladores de versiones o repositorios. Un entorno de desarrollo integrado, es un entorno de

Page 29: Programación orientada a objeto (autoguardado) 1

programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un

editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI).

Los IDE proveen un marco de trabajo amigable para la mayoría de los lenguajes de

programación tales como C++, PHP, Python, Java, C#, Delphi, Visual Basic, etc. En algunos

lenguajes, un IDE puede funcionar como un sistema en tiempo de ejecución, en donde se permite

utilizar el lenguaje de programación en forma interactiva, sin necesidad de trabajo orientado a

archivos de texto.

Algunos ejemplos de entornos integrados de desarrollo (IDE) son los siguientes:

Eclipse

NetBeans

IntelliJ IDEA

JBuilder de Borland

JDeveloper de Oracle

KDevelop

Anjunta

Clarion

MS Visual Studio

Visual C++

Los IDE ofrecen un marco de trabajo para la mayoría de los lenguajes de programación

tales como C++, Python, Java, C#, Delphi, Visual Basic, etc. En algunos lenguajes, un IDE puede

funcionar como un sistema en tiempo de ejecución, en donde se permite utilizar el lenguaje de

programación en forma interactiva, sin necesidad de trabajo orientado a archivos de texto.

Es posible que un mismo IDE pueda funcionar con varios lenguajes de programación.

Este es el caso de Eclipse, al que mediante plagios se le puede añadir soporte de lenguajes

adicionales.

Un IDE debe tener las siguientes características:

Page 30: Programación orientada a objeto (autoguardado) 1

Multiplataforma

Soporte para diversos lenguajes de programación

Integración con Sistemas de Control de Versiones

Reconocimiento de Sintaxis

Extensiones y Componentes para el IDE

Integración con Framework populares

Depurador

Importar y Exportar proyectos

Múltiples idiomas

Manual de Usuarios y Ayuda

Existen diferentes versiones de los IDE pero estos son algunos del software que utilizan

IDE, estos son:

a) Eclipse: Software libre. Es uno de los entornos Java más utilizados a nivel profesional.

El paquete básico de Eclipse se puede expandir mediante la instalación de plugins para añadir

funcionalidades a medida que se vayan necesitando.

b) NetBeans: Software libre. Otro de los entornos Java muy utilizados, también

expandible mediante plugins. Facilita bastante el diseño gráfico asociado a aplicaciones Java.

c) BlueJ: Software libre. Es un entorno de desarrollo dirigido al aprendizaje de Java

(entorno académico) y sin uso a nivel profesional. Destaca por ser sencillo e incluir algunas

funcionalidades dirigidas a que las personas que estén aprendiendo tengan mayor facilidad para

comprender aspectos clave de la programación orientada a objetos.

d) JBuilder: Software comercial. Se pueden obtener versiones de prueba o versiones

simplificadas gratuitas en la web, buscando en la sección de productos y desarrollo de

aplicaciones. Permite desarrollos gráficos.

Page 31: Programación orientada a objeto (autoguardado) 1

e) JCreator: Software comercial. Se pueden obtener versiones de prueba o versiones

simplificadas gratuitas en la web. Este IDE está escrito en C++ y omite herramientas para

desarrollos gráficos, lo cual lo hace más rápido y eficiente que otros IDE

Ventajas de los IDE

La curva de aprendizaje es muy baja.

Es más ágil y óptimo para los usuarios que no son expertos en manejo de consola.

Formateo de código.

Funciones para renombrar variables, funciones.

Warnings y errores de sintaxis en pantalla de algo que no va a funcionar al interpretar o compilar.

Poder crear proyectos para poder visualizar los archivos de manera gráfica.

Herramientas de refactoring como por ejemplo seria extraer una

Porción de código a un método nuevo.

No es recomendado pero posee un navegador web interno por si queremos probar las cosas

dentro de la IDE.

De acuerdo a todo esto algunos IDE no son gratuitos por el mismo motivo que el software

son utilizados para trabajos mejorados, por tal motivo en los IDE podemos implementar líneas de

código donde podamos resolver algún problema con base al compilador, este es el que nos

permitirá modificar o corregir nuestros errores del programa.

Mi opinión acerca de los IDE es que algunos de estos necesitan muchas aplicaciones para poder

sacar la aplicación y en otros es muy fácil utilizarlos porque al momento de escribir las líneas de

código te corrige tus problemas de la aplicación, de acuerdo a esto en mi punto de vista el IDE

que se pudiera implementar sería el de Creador y Eclipse.

Algunos entornos son compatibles con múltiples lenguajes de programación, como

Eclipse o NetBeans, ambos basados en Java; o MonoDevelop, basado en C#. También puede

incorporarse la funcionalidad para lenguajes alternativos mediante el uso de plugins. Por ejemplo,

Eclipse y NetBeans tienen plugins para C, C++, Ada, Perl, Python, Ruby y PHP, entre otros.

Page 32: Programación orientada a objeto (autoguardado) 1

Elementos de un Programa Java.

A continuación se describe la definición léxica y sintáctica de los elementos de un programa

Java: comentarios, identificadores, variables y valores, Tipos primitivos, literales, operadores,

expresiones y expresiones aritmético-lógicas.

Comentarios

En un programa Java hay tres tipos de comentarios.

Comentario de bloque: Empieza por /* y termina por */. El compilador ignora todo el texto

contenido dentro del comentario

/* * El programa HolaMundo se utiliza para aplicar los

* Métodos System.out.print() y System.out.println() */

Comentario de documentació: Empieza por /** y termina por */. Java dispone de la

herramienta javadoc para documentar automáticamente los programas. En un comentario de

documentación normalmente se indica el autor y la versión del software.

/**

* Programa HolaMundo

* @author Fundamentos de Informática

* @version 1.0

* @see Referencias

*/

Comentario de línea Empieza con //. El comentario comienza con estos caracteres y

termina al final de la línea. // El método System.out.print() salta la línea El uso de comentarios

hace más claro y legible un programa. En los comentarios se debe decir qué se hace, para qué y

cuál es el fin de nuestro programa. Conviene utilizar comentarios siempre que merezca la pena

hacer una aclaración sobre el programa. Identificadores El programador tiene libertad para elegir

el nombre de las variables, los métodos y de otros elementos de un programa. Existen reglas muy

estrictas

Identificadores

El programador tiene libertad para elegir el nombre de las variables, los métodos y de

otros

Page 33: Programación orientada a objeto (autoguardado) 1

Elementos de un programa. Existen reglas muy estrictas sobre los nombres que se utilizan como

identificadores de clases, de variables o de métodos.

Todo identificador debe empezar con una letra que puede estar seguida de más letras o

dígitos. Una letra es cualquier símbolo del alfabeto y el carácter ‘_’. Un dígito es cualquier

carácter entre ‘0’ y ‘9’. Los identificadores Hola, hola, número, numeroPar, numeroImpar,

numero_impar, numero_par, nombre, apellido1 y apellido2 son válidos. El identificador

1numerono es válido porque empieza con un dígito, no con una letra. Cualquier identificador que

empiece con una letra seguida de más letras o dígitos es válido siempre que no forme parte de las

palabras reservadas del lenguaje Java. El lenguaje Java distingue entre letras mayúsculas y

minúsculas, esto significa que los identificadores numeroPar y numeroparson distintos.

Existen unas normas básicas para los identificadores que se deben respetar.

Los nombres de variables y métodos empiezan con minúsculas. Si se trata de un nombre

compuesto cada palabra debe empezar con mayúscula y no se debe utilizar el guion bajo para

separar las palabras. Por ejemplo, los identificadores calcular Sueldo, setNombre o getNombre

son válidos.

Los nombres de clases empiezan siempre con mayúsculas. En los nombres compuestos,

cada palabra comienza con mayúscula y no se debe utilizar el guion bajo para separar las

palabras. Por ejemplo, HolaMundo, Perímetro Circunferencia, Alumno o Profesor son nombres

válidos.

Los nombres de constantes se escriben en mayúsculas. Para nombres compuestos se

utiliza el guión bajo para separar las palabras. Por ejemplo, PI, MINIMO, Máximo

TOTAL_ELEMENTOS son nombres válidos.

Variables y valores

Un programa Java utiliza variables para almacenar valores, realizar cálculos, modificar los

valores almacenados, mostrarlos por la consola, almacenarlos en disco, enviarlos por la red, etc.

Una variable almacena un único valor Una variable se define por un nombre, un tipo y el rango

de valores que puede almacenar.

Page 34: Programación orientada a objeto (autoguardado) 1

El nombre de una variable permite hacer referencia a ella. Este nombre debe cumplir las

reglas aplicables a los identificadores. El tipo indica el formato de los valores que puede

almacenar la variable: cadenas de caracteres, valores lógicos, números enteros, números reales o

tipos de datos complejos. El rango indica los valores que puede tomar la variable. Por ejemplo,

una variable de tipo número entero, con nombre mes Nacimiento puede almacenar valores

positivos y negativos, lo que no tiene sentido cuando se trata de meses del año. El rango válido

para esta variable sería de 1 a 12. Para declarar una variable en Java se indica el tipo y su nombre.

int mesNacimiento;

En este ejemplo se indica que la variable es de tipo entero (int) y su nombre es

mesNacimiento

. Una vez declarada una variable, se puede utilizar en cualquier parte del programa

referenciándola por su nombre. Para almacenar un valor en una variable se utiliza el operador de

asignación y a continuación se indica el valor, por ejemplo 2.

mesNacimiento = 2;

A partir de este momento la variable

mesNacimiento almacena el valor 2 y cualquier referencia a ella utiliza este valor. Por

ejemplo, si se imprime el valor de la variable por la consola, muestra el valor 2.

System.out.print(mesNacimiento);

Java permite declarar e inicializar una variable en una sola sentencia.

int diaNacimiento = 20;

int mesNacimiento = 3;

En este ejemplo se declaran las variables diaNacimiento con el valor 20 y mesNacimiento

con valor 3. Si se declara una constante, entonces se debe utilizar el delimitador final y es

necesario indicar su valor. En la siguiente declaración se define el valor de la constante pi de tipo

double para almacenar un número real.

final double PI = 3.1415926536;

Page 35: Programación orientada a objeto (autoguardado) 1

Es conveniente utilizar nombres apropiados para las variables. El nombre de una variable

debe indicar para qué sirve. El nombre de una variable debe explicarse por sí mismo para mejorar

la legibilidad del programa. Si se desea declarar más de una variable a la vez se deben separar las

Variables en la sentencia de la declaración.

int dia=20, mes=2, año=2020;

En este ejemplo se declaran las variables enteras dia, mes y año

. La variable día se inicializa con el valor 20, mes con 2 y año con 2020. La siguiente declaración

es equivalente a la anterior.

int dia=20;

int mes=2;

int año=2020;

Tipos primitivos

Las variables de java pueden ser de un tipo primitivo de datos o una referencia a un

objeto. Los tipos primitivos permiten representar valores básicos. Estos tipos se

clasifican en números enteros, números reales, caracteres y valores booleanos.

Números enteros. Representan números enteros positivos y negativos con

distintos rangos de valores, desde cientos a trillones. Los tipos enteros de Java son

byte, int, Short y long.

Números reales. Existen dos tipos de números reales en Java, float y double. La diferencia

entre ellos está en el número de decimales que tienen capacidad para expresar y en sus rangos de

valores.

Caracteres. El tipo char permite representar cualquier carácter Unicode. Los caracteres

Unicode contienen todos los caracteres del alfabeto de la lengua castellana.

Booleano Se utiliza para representar los valores lógicos verdadero y falso. Solo tiene dos

valores true y false.

Literales

Page 36: Programación orientada a objeto (autoguardado) 1

Se denomina literal a la manera en que se escriben los valores para cada uno de los tipos

primitivos. Números enteros

Un número entero en Java se puede escribir en decimal, octal o en hexadecimal. Cuando se

utiliza el sistema octal es necesario poner el dígito 0 delante del número. Si se utiliza el sistema

hexadecimal se debe poner 0x delante del número. Por ejemplo, el número decimal 10 se puede

escribir 012 en octal y 0xA en hexadecimal. Los números enteros se supone que pertenecen al

tipo int.

Números reales Un número real en Java siempre debe tener un punto decimal o un

exponente. Por ejemplo, el número 0.25 se puede expresar también como 2.5e-1. Los números

reales se supone que pertenecen al tipo double

Booleanos. Los valores lógicos solo pueden ser true y false

Se escriben siempre en minúsculas.

Caracteres Los valores de tipo carácter representan un carácter Unicode. Se escriben

siempre entre comillas simples, por ejemplo 'a', 'A', '0', '9'. En Java un carácter se puede expresar

por su código de la tabla Unicode en octal o en hexadecimal.

Operadores

Cada tipo puede utilizar determinados operadores para realizar operaciones o cálculos.

Números enteros. Al realizar una operación entre dos números enteros, el resultado siempre

es un número entero. Con los números enteros se pueden realizar operaciones unarias, aditivas,

multiplicativas, de incremento y decremento, relacionales, de igualdad y de asignación.

-Una operación unaria permite poner un signo delante: +5, -2.

-Una operación aditiva se refiere a la suma y la resta: 2+3, 5-2.

-Una operación multiplicativa multiplica o divide dos valores: 5*2, 5/2. El operador %

calcula el resto de la división entera 5%2.

-Un incremento o decremento aumenta o decremento en 1 el valor de una variable: +

+número, número++, --número, número--. Si el operador va antes de la variable, primero se

realiza la operación y se modifica el valor de la variable. Si el operador va después de la variable,

su valor se modifica al final.

-Un operador relacional permiten comparar dos valores: >, <, >= y <=. El resultado de la

comparación es un valor booleano que indica si la relación es verdadera o falsa.

Page 37: Programación orientada a objeto (autoguardado) 1

-Un operador de igualdad compara son dos valores son iguales o no. El operador == devuelve

verdadero si los dos valores son iguales, el operador!= devuelve verdadero si son diferentes. El

resultado de la comparación es un valor booleano que indica si la igualdad o desigualdad es

verdadera o falsa.

-Un operador de asignación permite asignar un valor o el resultado de una operación a una

variable: =, +=, -=, *=, /=, %=.

Números reales. Con los números reales se aplican los mismos operadores que con los

números enteros. Si se realizan operaciones unarias, aditivas o multiplicativas, el resultado es un

número real. También se pueden aplicar los operadores relacionales para comparar dos números

reales.

Booleanos. Los operadores que se aplican a los valores lógicos son: negación, Y lógico, O

lógico.

-La negación (!) devuelve truesi el operando es false.

-El Y lógico (&&) devuelve false si uno de los operando es false.

-El O lógico (||) devuelve truesi uno de los operandos es true.

Expresiones

Una expresión permite realizar operaciones entre valores utilizando distintos operadores. Las

expresiones son útiles para representar las fórmulas matemáticas que se utilizan para realizar

cálculos. En Java se pueden definir expresiones tan complejas como sea necesario. Por ejemplo,

para convertir una temperatura de grados Fahrenheit a Centígrados se utiliza la fórmula:

C = ((F – 32) * 5) / 9

En este ejemplo C representa la temperatura en grados centígrados y F en grados

Fahrenheit.

La fórmula en Java, utilizando las variables centígrados y Fahrenheit de tipo doublé

Centígrados = ((fahrenheit – 32.0) * 5.0)) / 9.0;

Page 38: Programación orientada a objeto (autoguardado) 1

Toda la expresión se evalúa a un valor. El orden de los cálculos depende del orden de

prioridad de los operadores: primero los operadores unarios, después los multiplicativos, de

izquierda a derecha, después los operadores aditivos, de izquierda a derecha, después los

operadores de relación y por último los operadores de asignación.

Por ejemplo, la expresión x = -3 + 2 * 4 – 12 / 6 + 5 se calcula en el orden siguiente:

Primero se aplica el operador unario (-) a 3 y se obtiene -3. A continuación se evalúan los

operadores multiplicativos de izquierda a derecha. Se calcula el producto de 2 * 4 y se obtiene 8,

después se divide 12 / 6 y se obtiene 2.

Al finalizar estas operaciones la expresión queda x = -3 + 8 – 2 + 5. Por último, se

evalúan los operadores aditivos de izquierda a derecha y se obtiene 8.

Cuando se desea modificar el orden de prioridad de los operadores es necesario utilizar

paréntesis para indicar el orden de evaluación. Por ejemplo, al calcular el valor de y = -3 + 2 *

(14 – 2) / 6 + 5 se obtiene 6.

Expresiones aritmético-lógicas

Una expresión aritmético-lógica devuelve un valor lógico verdadero o falso.

En este tipo de expresiones se utilizan operadores aritméticos, operadores relacionales y de

igualdad. Por ejemplo,

Una expresión lógica puede ser: (10 – 2) > (5 – 3)

En este ejemplo la expresión aritmético-lógica es verdadera porque el lado derecho de la

expresión es mayor que el lado izquierdo. En una expresión aritmético-lógica se pueden

combinar varias expresiones con operadores lógicos. La precedencia de los operadores lógicos es

menor que la de los operadores relacionales, por lo que primero se evalúan las desigualdades y

después los operadores lógicos. El orden de prioridad de los operadores lógicos es el siguiente:

primero la negación, después el Y lógico y por último el O lógico. La prioridad de los operadores

de asignación es la menor de todas.

Por ejemplo, la expresión 3 + 5 < 5 * 2 || 3 > 8 && 7 > 6 – 2 se evalúa en el orden

siguiente.

Primero se evalúan las expresiones aritméticas y se obtiene

Page 39: Programación orientada a objeto (autoguardado) 1

la expresión lógica 8 < 10 || 3 > 8 && 7 > 4.

A continuación se evalúan los operadores relacionales y se obtiene true|| false && true

. Ahora se evalúa el operador Y lógico con los operandos false && true y se obtiene false.

Por último, se evalúa el operador O lógico con los operandos true|| falsey se obtiene true,

el valor final de la expresión.

Los operadores lógicos && y || se evalúan por cortocircuito. Esto significa que al evaluar

a && b, si a es falso, no es necesario evaluar b porque la expresión es falsa. De forma similar, al

evaluar a || b, si a es verdadero, no es necesario evaluar b porque la expresión es verdadera.

Estructura de control.

El cuerpo de un programa se compone de un conjunto de sentencias que especifican las

acciones que se realizan durante su ejecución. Dentro de cualquier programa, se escriben

sentencias que definen la secuencia de acciones a ejecutar. Estas sentencias incluyen acciones de

cálculo, entrada y salida de datos, almacenamiento de datos, etc. Las sentencias se ejecutan una a

una en el orden en el que han sido escritas. Se denomina flujo de un programa al orden de

ejecución de las sentencias que forman parte del cuerpo de un programa. Las estructuras de

control son una característica básica de los lenguajes que se utiliza para modificar el flujo de un

programa.

Hay casos en los que el flujo de un programa debe ejecutar determinadas instrucciones solo

cuando se cumple una condición. En otras ocasiones, debe repetir un conjunto de sentencias un

número determinado de veces. Las estructuras de control permiten condicionar el flujo de

ejecución dependiendo del estado de las variables de un programa. Las estructuras de control

básicas se pueden clasificar en estructuras de selección, de repetición y de salto.

Selección. Permiten decidir si se ejecuta un bloque de sentencias o no.

Repetición. Permiten ejecutar un bloque de sentencias muchas veces.

Salto. Permiten dar un salto y continuar la ejecución de un programa en un punto distinto

de la siguiente sentencia en el orden natural de ejecución.

Page 40: Programación orientada a objeto (autoguardado) 1

Las estructuras de control se pueden combinar sin ningún tipo de limitación. Cualquier nuevo

bloque de sentencias puede incluir estructuras de control a continuación de otras. Cuando se

incluyen varias estructuras seguidas unas de otras, se dice que son estructuras de control apiladas.

Por otra parte, dentro de un bloque de una estructura de control se puede incluir otra

estructura de control y dentro de este nuevo bloque se puede incluir otra estructura de control y

así sucesivamente. Cuando una estructura contiene otra estructura, se dice que son estructuras de

control anidadas. Es importante destacar que no existe limitación en cuanto al número de

estructuras de control apiladas o anidadas que se pueden utilizar en un programa Java. La única

restricción a tener en cuenta es la claridad y la legibilidad del programa.

Estructuras de selección

Las estructuras de selección permiten modificar el flujo de un programa. La decisión de ejecutar

un bloque de sentencias queda condicionada por el valor de una expresión lógica definida

utilizando variables del programa.

Estructura if

La estructura if se denomina estructura de selección única porque ejecuta un bloque de

sentencias solo cuando se cumple la condición del if. Si la condición es verdadera se ejecuta el

bloque de sentencias. Si la condición es falsa, el flujo del programa continúa en la sentencia

inmediatamente posterior al if.

Una sentencia if tiene la siguiente sintaxis:

if (condicion) {

bloque-de-sentencias

}

La condición es una expresión que evalúa un valor lógico, por lo que el resultado solo

puede ser true o false. La condición siempre se escribe entre paréntesis. La selección se produce

sobre el bloque de sentencias delimitado por llaves. Si el bloque de sentencias solo tiene una

sentencia, entonces se puede escribir sin las llaves, como se muestra a continuación.

if (condicion)

sentencia;

Page 41: Programación orientada a objeto (autoguardado) 1

Cuando el flujo de un programa llega a una estructura if, se evalúa la condición y el

bloque de instrucciones se ejecuta si el valor de la condición es true. Si la condición es false,

entonces se ejecuta la sentencia inmediatamente posterior al if.

Por ejemplo, si la calificación de un alumno es 10, entonces se debe mostrar por la

consola un mensaje indicando que tiene una Matrícula de Honor.

La sentencia if considerando que calificación es una variable de tipo int:

if (calificacion == 10) {

System.out.println("Matrícula de Honor");

}

En este ejemplo el mensaje “Matrícula de Honor” solo se muestra cuando el valor de la

calificación es igual a 10.

Estructura if else

La estructura if-else se denomina de selección doble porque selecciona entre dos bloques

de sentencias mutuamente excluyentes. Si se cumple la condición, se ejecuta el bloque de

sentencias asociado al if. Si la condición no se cumple, entonces se ejecuta el bloque de

sentencias asociado al else.

Una sentencia if-else tiene la siguiente sintaxis:

if (condicion) {

bloque-de-sentencias-if

}

else {

bloque-de-sentencias-else

}

Al igual que en el if, la condición se debe escribir entre paréntesis. La selección depende

del resultado de evaluar la condición. Si el resultado es true, se ejecuta el bloque de sentencias del

if, en cualquier otro caso se ejecuta el bloque de instrucciones del else. Después de ejecutar el

bloque de sentencias se ejecuta la sentencia inmediatamente posterior al if-else

Por ejemplo, si se desea mostrar un mensaje por la consola para indicar si un número es

par o impar, basta con calcular el resto de la división del número entre 2 con el operador %. Si el

Page 42: Programación orientada a objeto (autoguardado) 1

resto es igual a cero, entonces el número es par, en caso contrario el número es impar. La

sentencia if-else:

if (numero % 2 == 0)

System.out.println("El número es par");

else

System.out.println("El número es impar");

Como se ha comentado antes, los bloques de sentencias son mutuamente excluyentes. Si

se cumple la condición se ejecuta un bloque de sentencias, en caso contrario se ejecuta el otro

bloque de sentencias. Teniendo en cuenta esto, se podría escribir una sentenciaif-else con la

condición contraria y con los bloques de sentencias intercambiados.

if (numero % 2 != 0)

System.out.println("El número es impar");

else

System.out.println("El número es par");

Si fuera necesario evaluar más de una condición, entonces se deben utilizar varias

estructuras de selección anidada

Estructura if else if

La estructura if-else-if se puede aplicar en los mismos casos en que se utiliza un if-else

anidado. Esta estructura permite escribir de forma abreviada las condiciones de un if-else

anidado.

Una sentencia if-else-if tiene la siguiente sintaxis:

if (condicion-1) {

bloque-de-sentencias-condicion-1

} else if (condicion-2) {

bloque-de-sentencias-condicion-2

} else {

bloque-de-sentencias-else

}

Page 43: Programación orientada a objeto (autoguardado) 1

La sentenciaif-else-if para el ejemplo de las calificaciones:

int calificacion = 7;

if (calificacion == 10) {

System.out.println("Matrícula de Honor");

} else if (calificacion == 9) {

System.out.println("Sobresaliente");

} else if (calificacion >= 7) {

System.out.println("Notable");

} else if (calificacion == 6) {

System.out.println("Bien");

} else if (calificacion == 5) {

System.out.println("Aprobado");

} else {

System.out.println("Suspenso");

}

Estructura switch

La estructura switches una estructura de selección múltiple que permite seleccionar un

bloque de sentencias entre varios casos. En cierto modo, es parecido a una estructura de if-else

anidados. La diferencia está en que la selección del bloque de sentencias depende de la

evaluación de una expresión que se compara por igualdad con cada uno de los casos. La

estructura switch consta de una expresión y una serie de etiquetas case y una opción default. La

sentencia break indica el final de la ejecución del switch.

Una sentencia switch tiene la siguiente sintaxis:

switch (expresion) { case valor-1:

bloque-de-sentencias-1;

break;

case valor-2:

bloque-de-sentencias-2;

break;

case valor-3:

Page 44: Programación orientada a objeto (autoguardado) 1

bloque-de-sentencias-3;

break;

case valor-4:

bloque-de-sentencias-4;

break;

case valor-5:

bloque-de-sentencias-5;

break;

default:

bloque-de-sentencias-default;

break;

}

Entrada y salida.

Los flujos de Java Prácticamente todos los programas deben leer datos del exterior para

procesarlos y después presentar los resultados. La información que necesita un programa

normalmente se obtiene mediante la entrada de datos por el teclado o leyendo un fichero. Los

resultados de la ejecución de un programa se pueden presentar por la consola, la impresora o en

un fichero. El tipo de información que se utiliza tanto en las entradas como en las salidas puede

tener diversos formatos: texto, imagen, sonido, binario, etc. En Java, la entrada de datos se realiza

mediante un flujo de entrada. Para realizar la entrada de datos es necesario abrir el flujo de

entrada, leer la información del flujo hasta el final y por último cerrar el flujo. La salida se hace

mediante un flujo de salida. Para realizar la salida de datos es necesario abrir el flujo de salida y a

continuación se escribe en él toda la información que se desee, por último, se cierra el flujo.

Este esquema de entradas y salidas basadas en un flujo permite que las entradas sean

independientes de la fuente de datos y que las salidas sean independientes del destino de los

datos. Un flujo en Java es un objeto que se utiliza para realizar una entrada o salida de datos.

Representa un canal de información del que se puede leer o escribir datos de forma secuencial.

Existen dos tipos de flujos en Java, los que utilizan bytes y los que utilizan caracteres.

Page 45: Programación orientada a objeto (autoguardado) 1

La siguiente tabla muestra los flujos de entrada de datos de Java:

Flujos con bytes Flujos con caracteres

InputStream

ByteArrayInputStream

FileInputStream

FilterInputStream

BufferedInputStream

DataInputStream

LineNumberInputStream

PushBackInputStream

ObjectInputStream

PipedInputStream

SequenceInputStream

StringBufferInputStream

Reader

BufferedReader

LineNumberReader

CharArrayReader

FilterReader

PushBackReader

InputStreamReader

FileReader

PipedReader

StringReader

La siguiente tabla muestra los flujos de salida de datos de Java:

Flujos con bytes Flujos con caracteres

OutputStream

ByteArrayOutputStream

FileOutputStream

FilterOutputStream

BufferedOutputStream

DataOutputStream

PrintStream

ObjectOutputStream

PipedOutputStream

Writer

BufferedWriter

CharArrayWriter

FilterWriter

OutputStreamWriter

FileWriter

PipedWriter

PrintWriter

StringWriter

Existen flujos con bytes y flujos con caracteres que se aplican a la misma entrada o salida.

FileInputStream y FileOutputStream son flujos para leer y escribir bytes en un fichero,

FileReader

Page 46: Programación orientada a objeto (autoguardado) 1

Y FileWriter también son flujos que se aplican a ficheros, pero en este caso para leer y escribir

caracteres.

Entrada de datos desde el teclado

El flujo de entrada System.in lee los datos que se introducen en el teclado. Si este flujo se

pasa como argumento a una instancia de la clase Scanner, permite realizar la lectura de datos del

teclado. Basta con utilizar los métodos next(), nextLine() y nextInt() para leer una palabra, una

línea y un número entero, respectivamente.

A continuación se muestra el uso de la clase Scanner y el flujo de entrada del teclado

System.in. Para utilizar la clase Scanner en un programa Java es necesario importar la librería

java.util.Scanner.

Suponga que se desea realizar un programa que pide un nombre, el día, el mes y el año de la

fecha de nacimiento de una persona. En este programa se declara una instancia de la clase

Scanner, con nombre entradaTeclado que se inicializa con el flujo de entrada del teclado

System.in.

Scanner entradaTeclado = new Scanner(System.in);

La clase Scanner ofrece los métodos next(), nextLine() o nextInt(), entre otros. El método

next() lee una palabra, el método nextLine() lee una línea completa y el método nextInt() lee un

número de tipo entero. La variable nombre de tipo String se inicializa con el nombre que se

introduce en el teclado. Como se invoca el método nextLine() de entradaTeclado, se lee toda la

línea, de manera que la variable nombre almacena tanto el nombre como los apellidos de la

persona.

System.out.print("¿Cómo te llamas? ");

nombre = entradaTeclado.nextLine();

tipos de programas que pueden hacerse en JAVA

Los programas en Java suelen estar en una de las siguientes categorías:

• Applets

Los applets son pequeños programas que se incorporan en una página Web y que por lo

tanto, necesitan de un Navegador Web compatible con Java para poder ejecutarse. A menudo los

Page 47: Programación orientada a objeto (autoguardado) 1

applets se descargan junto con una página HTML desde un Servidor Web y se ejecutan en la

máquina cliente.

• Aplicaciones

Las aplicaciones son programas standalone de propósito general que normalmente se

ejecutan desde la línea de comandos del sistema operativo. Con Java se puede realizar cualquier

programa que normalmente se crearía con algún otro lenguaje de programación.

• Servlets

Los servlets al contrario de los applets son programas que están pensados para trabajar en

el lado del servidor y desarrollar aplicaciones Web que interactúen con los clientes. Los servlets

son una alternativa de la programación CGI tradicional.

Introducción:

Page 48: Programación orientada a objeto (autoguardado) 1
Page 49: Programación orientada a objeto (autoguardado) 1

Conclusión.