1. introducción

48
Programación II Tema 1 - Introducción 1. Introducción Clases: objetos, atributos, métodos De clase y de instancia Visibilidad set/get Objetos vs. valores primitivos Paso de parámetros Constructores Conversiones implícitas y explícitas Contenedores (composición)

Upload: razi

Post on 15-Jan-2016

48 views

Category:

Documents


0 download

DESCRIPTION

1. Introducción. Clases: objetos, atributos, métodos De clase y de instancia Visibilidad set/get Objetos vs. valores primitivos Paso de parámetros Constructores Conversiones implícitas y explícitas Contenedores (composición). ¿Qué es la abstración?. Abstracción - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 1. Introducción

Programación II Tema 1 - Introducción

1. Introducción

• Clases: objetos, atributos, métodos• De clase y de instancia• Visibilidad• set/get

• Objetos vs. valores primitivos• Paso de parámetros• Constructores

• Conversiones implícitas y explícitas• Contenedores (composición)

Page 2: 1. Introducción

Programación II Tema 1 - Introducción

¿Qué es la abstración?

• Abstracción– Quedarse con las características esenciales de algo (desde

un cierto punto de vista), ignorando los detalles irrelevantes.

Page 3: 1. Introducción

Programación II Tema 1 - Introducción

Clases y objetos

• Clases y Objetos– Un programa orientado a objetos se compone sólo

de objetos– Un Objeto...

• Tiene datos (atributos) y comportamiento (métodos)• Es la concreción (un ejemplar, instancia) de una clase

– Una Clase... • Es una plantilla (modelo) para crear objetos similares.• Define un conjunto de características comunes (atributos y

métodos) a todos los objetos de esa clase.• Es la abstracción de un conjunto de objetos.• Puede utilizarse para crear muchos objetos, pocos o

ninguno– En ese caso es simplemente una agrupación de código y datos

únicos– Por ejemplo, Math

Page 4: 1. Introducción

Programación II Tema 1 - Introducción

Acceso encapsulado

Page 5: 1. Introducción

Programación II Tema 1 - Introducción

De clase y de instancia (1)

– Atributos de Instancia• Cada instancia creada de la clase tiene sus

propios valores y espacio de almacenamiento. Ej: velocidad Máxima, consumo y matrícula

– Atributos de Clase• Se crea una variable única para la clase y

TODOS los objetos que se creen a partir de esa clase.

• Todos los objetos acceden a esa variable (se comparte por todos)

• Lleva el modificador static• Ejemplo: numCoches

Page 6: 1. Introducción

Programación II Tema 1 - Introducción

De clase y de instancia (2)

• Métodos de Instancia– Método asociado a una instancia/objeto en particular– Cuando se llama, se tiene acceso a los datos

contenidos en la instancia a la que está asociada.• Llamada: objeto.nombre_metodo(arg1, arg2,...argN)

• Métodos de Clase– Método asociado a la clase y no a una instancia en

particular. Es un método único para todos los objetos creados a partir de esa clase.

– Manejan información significativa para toda la clase y no de una instancia en particular

– Se declaran como static– No contemplan el polimorfismo (con herencia)

• Llamada: nombre_clase.nombre_metodo(arg1, arg2,..., argN)

Page 7: 1. Introducción

Programación II Tema 1 - Introducción

La clase es una plantilla!staticno static

......

class C { double d; String s; static int i2; void op1() {...} int op2() {...} static int op3(){...}}

C c1 = new C();c1.d = 5.0; c1.s = “a”;

C c2 = new C();c2.d = 25; c2.s = “bb”;

op1()

op2()

op3()

...d

s

i2

5.0

“a”

25

“bb”

op1()

op2()

c1

c2

op1()

op2()

Page 8: 1. Introducción

Programación II Tema 1 - Introducción

¿Y qué es un programa?

• Actividades fundamentales de un programa OO– Crear los objetos necesarios

(constructores)– Invocar métodos de los objetos

(mensajes)– Borrar los objetos cuando no son

necesarios (automático en Java: garbage collector)

Page 9: 1. Introducción

Programación II Tema 1 - Introducción

Visibilidad (1)

• Encapsulación y Ocultamiento de la Información– Manipulación de un objeto como una caja

negra, sin necesidad de conocer nunca su estructura interna.

– Se usan los servicios (métodos) que proporciona el objeto sin necesidad de conocer cómo está éste implementado por dentro

– En las OO, las propiedades (atributos) de los objetos pueden ser privadas y se accede a ellas a través de los métodos

• Se recomienda que los atributos sean siempre privados• Acceso público con get/set [ver luego]

Page 10: 1. Introducción

Programación II Tema 1 - Introducción

Visibilidad (2)

– Modificadores que afectan al ámbito

MODIFICADOR SIGNIFICADO

public Mét/Atr accesible desde cualquier clase

private Mét/Atr sólo accesible en métodos de la misma clase

<Sin Modificador>

Mét/Atr accesible por la propia clase y por las clases del mismo paquete

protected Mét/Atr accesible por la propia clase, por las subclases y por las clases del mismo paquete

Page 11: 1. Introducción

Programación II Tema 1 - Introducción

Objetos y tipos primitivos

• Los atributos/variables/parámetros dependen de su definición:– Tipos primitivos:

• Tamaño dependiente de tipo (bits codif.)• Siempre tienen nombre• Siempre tienen valor (siempre están “creados”)

– Objetos• Tamaño: una referencia + espacio para sus

atribs.• Se crean con new (antes NO están creados)• Se usa el valor especial null cuando no lo están• Pueden no tener nombre

Page 12: 1. Introducción

Programación II Tema 1 - Introducción

Objetos y tipos primitivos (2)

• Tipos primitivos– Sus valores se comparan con == !=– Sus valores se copian con =– Para operar con ellos se pasan como parámetros

• Objetos– Con == no se comparan los valores: referencias

• Para los valores .equals()

– Con = no se duplica el valor, solo se copia la referencia (copia superficial. Ojo!)

– Pueden pasarse como parámetros, pero también llamarse métodos sobre ellos obj.método(...)

Page 13: 1. Introducción

Programación II Tema 1 - Introducción

Métodos get y set (1/3)

• El acceso a los atributos tal y como se ha explicado anteriormente viola el concepto de encapsulación.

• Solución: – Métodos get para consultar los atributos

de una clase.– Métodos set para modificar los atributos

de una clase.

Page 14: 1. Introducción

Programación II Tema 1 - Introducción

Métodos get y set (2/3)• ¿Por qué complicarnos?

– 1) Independencia de implementación y cambios• (ej: long getDNI())

– 2) Control de errores• (ej: setFecha( int dia, int mes, int anyo ))

– 3) Campos calculados• (ej: setValorFactura( base, iva ) -> base, iva, total)

– 4) Polimorfismo• (diferente lógica en clase padre e hijo sobre el mismo dato)

– 5) Para pruebas y depuración• es más fácil depurar el paso por un método que por un atributo:

void getDNI() { if (...) System.out.println( "Cogiendo DNI " + dni );return dni;

}

Page 15: 1. Introducción

Programación II Tema 1 - Introducción

Métodos get y set (3/3)

• Ejemplo:public void setX(double pX){

x=pX;}public double getX(){

return x;}public void setCentro(double pX, double pY){

this.x = pX;this.y = pY;

}...

Page 16: 1. Introducción

Programación II Tema 1 - Introducción

• Normas de estilo seguidas en Java– Clases empiezan con mayúscula y cada

cambio de concepto con mayúscula.class MiClase

– Miembros (atributos y métodos) empiezan con minúsculas y cada cambio de concepto con mayúscula.int miAtributovoid miMetodo()

– Constantes todo con mayúsculas y cada cambio de concepto con guión bajo ‘_’static final int MI_CONSTANTE

Sintaxis básica de Java (1)

Page 17: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis básica de Java (2)

• Comentarios– El “//” comenta hasta el final de la línea– El “/*” comenta hasta el primer “*/” (no se permite

anidamiento)– Comentarios de documentación “/**” al principio de una

clase, atributo o método. (JavaDoc, herramienta por defecto).

• Tipos– Java es un lenguaje con un control estricto de tipos

• Cada variable debe declararse con un tipo– Los tipos se clasifican en dos grandes grupos:

• Tipos Primitivos• Clases

– Tipos Primitivos• char• boolean• Numéricos

– Enteros (byte, short, int, long) (8, 16, 32, 64 bits con signo)– Reales (float, double) (32, 64 bits con signo, infinito, NaN)

Page 18: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis básica de Java (3)

– Conversiones entre los tipos enteros, reales y caracteres. De dos tipos:•Implícitas (automáticamente por el

compilador)

5 + 2.3 [5 5.0]

double x = 5 / 2.0; [5/2.0 5.0/2.0]real = entero [entero real]

•Explícitas (programador mediante un casting). Máxima: No perder precisión.

(int)5.4

double x = 5 / (double)2

Page 19: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis básica de Java (4)

• Todos los demás tipos son clases (referencias).

• Definidas por el usuario o ya existentes en el API de Java

• Las clases en Java se gestionan mediante referencias.

ClaseX referencia = instanciaClaseX;

ClaseX referencia = null;– Toda variable de un tipo de clase X (o sea, referencia)

mantiene una referencia nula, expresada por la palabra clave null, o bien apunta a una instancia de la clase X (o alguna de sus subclases).

– Las instancias hay que crearlas EXPLICITAMENTE (o algún método las creará por nosotros). La declaración no implica instanciación.

Page 20: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis básica de Java (5)

• Operadores– Aritméticos (enteros y reales)

• + - * /– Aritméticos (enteros)

• % (módulo o resto)– Booleanos

• < <= > >= == !=• && || !

– Manipulación de bits (enteros)• And (&), Or (|), Xor (^), Not (~), Desplazamiento (>> <<

>>>)– Incremento y decremento (forma prefija y postfija)

• ++ --– Asignación (=)

Page 21: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis básica de Java (6)

• Estructuras de Control Iguales que en C y C++

• if ( exp ) sent1 [else sent2]• for (inic; exp.while; inc.) sent ;• switch (exp) {

– case exp: sent;– ... }

• while ( exp ) sent ;• do sent while ( exp ) ;

Page 22: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis Java decl. de clases (1)

[Modif. de clase] class Nombre_Clase [Clase Padre (0-1)] [Interfaces(0-N)]{

[Cuerpo de la Clase]}

[Modif. de clase]: public | abstract | final[Clase Padre]: extends Tipo_Clase_Padre[Interfaces]: implements Lista_Interfaces

Page 23: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis Java decl. de clases (2)

• Ejemplo de declaración de una clasepublic class Circulo{

double x,y;double radio;public double perimetro(){

return 2*3.1416*radio;}public double area(){

return 3.1416*radio*radio;}

}

Page 24: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis Java decl. de clases (3)

• Modificadores que no afectan al ámbito

• Afectan al ámbito: private, protected, public

MODIFICADOR SIGNIFICADO

final Atributo con valor constanteMétodo que no puede ser redefinidoClase que no puede ser heredada

static Método o atributo de clase

abstract Método que está declarado pero no implementado (método abstracto). Deberá implementarse en las subclases

Clase que no puede instanciarse

Page 25: 1. Introducción

Programación II Tema 1 - Introducción

Constructores (1/2)

• Tipo especial de método que permite crear objetos• Cuando una clase no declara ningún constructor,

Java automáticamente crea un constructor por defecto (constructor sin parámetros). Cuando no se especifica uno por defecto pero se declara uno con parámetros, se pierde el constructor por defecto

• Una clase puede tener uno o varios constructores.• El nombre del método constructor debe coincidir

con el nombre de la clase y no devuelve ningún tipo de valor (ni void).

• En principio suelen ser siempre públicos. ¿Por qué?

Page 26: 1. Introducción

Programación II Tema 1 - Introducción

Constructores (2/2)• Ejemplo Constructorespublic class Circulo{

double x,y;double radio;public Circulo(){

x = 0;y = 0;radio = 0;

}public Circulo(double cX, double cY, double r){

x = cX;y = cY;radio = r;

}…

}

Page 27: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis para instancias (1/3)

• Creación de instanciasCirculo miCirculo; //CASO 1º

– CASO 1º: Así no se crea ningún objeto, únicamente estamos declarando una referencia a un objeto de tipo Circulo (se inicializa a null).

Circulo miCirculo = new Circulo(); //CASO 2º

– CASO 2º: Así estamos creando un objeto de tipo Circulo mediante el constructor sin parámetros ( new Circulo() ) y se lo estamos asignando a la referencia miCirculo

Circulo miCirculo = new Circulo(2,4,5);//CASO 3º

– CASO 3º: Así estamos creando un objeto de tipo Circulo mediante la invocación al constructor con tres parámetros ( new Circulo (int,int,int) ) y se lo estamos asignando a la referencia miCirculo

– En Java todos los objetos se crean en memoria dinámica (new)

Page 28: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis para instancias (2/3)

• Acceso a los atributos de un objeto

miCirculo.x = 3;miCirculo.y = 3;miCirculo.radio = 3;

Siempre bajo el supuesto de que los modificadores de esos atributos permitan el acceso a ellos.

Page 29: 1. Introducción

Programación II Tema 1 - Introducción

La clase String

• El String (en Java) no es un tipo primitivo, es una clase. Sin embargo, Java le ofrece un tratamiento especial.– Los literales de la cadena van entre comillas

dobles.String saludo = “Hola”;

– Java permite la concatenación de cadenas mediante +

System.out.println(saludo + “ a todos!!!”);

– Si se concatena una cadena con otro tipo, este último se convierte automáticamente a cadena

int valor = 5;System.out.println(“Valor = ” + valor + ‘.’);

• (método toString())

Page 30: 1. Introducción

Programación II Tema 1 - Introducción

Arrays (1/5)

• Los arrays en Java se caracterizan por ser objetos.• Por tanto, se necesita una referencia para

manipularlos.• Declaración de un array:

int v[]; //No se indica el tamañoint[] v;– ¡Ojo! Aquí lo único que hemos hecho es declarar una

referencia a un array de enteros. ¡El array todavía no está creado!

• El array, como cualquier otro objeto, se crea con new.v = new int[10];float v2 = new float[50]

• Para acceder a los elementos de una array se usa la notación clásica de arrays:v[0] = 5;int a = v[2];

Page 31: 1. Introducción

Programación II Tema 1 - Introducción

Arrays (2/5)

• El rango de un array está en 0 y N-1 (siendo N el tamaño)

• Si se accede a una posición fuera de rango, el interprete nos avisa (se produce una excepción)

• Como los arrays son objetos tienen atributos. El atributo length permite saber el tamaño de una arrayint tamaño = v.length

• Java permite inicializar el array en su declaraciónint[] v = {1,2,3};

• Equivale a:int[] v = new int[3];v[0] = 1;v[1] = 2;v[2] = 3;

Page 32: 1. Introducción

Programación II Tema 1 - Introducción

Arrays (3/5)

• Ejemplo:public class Ejemplo{

public static void main(String[] args){

int[] a1 = {1,2,3,4};for(int i=0; i < a1.length; i++)

System.out.println(a1[i]);}

}• Cuando el array no es de tipos primitivos lo que se

almacena en cada posición es una referencia a un objetoAnimal[] animales = new Animal[10];

• Inicialmente, cada una de las referencias del array se inicializa a null.

• Posteriormente habrá que crear los objetos y guardarlos en el arrayanimales[0] = new Animal();animales[1] = new Animal();

Page 33: 1. Introducción

Programación II Tema 1 - Introducción

• De tipo primitivo

int v[]; //Sólo referencia!!

v = new int[6];

//o lo que es lo mismo

int v[] = new int[6];

//Acceso a los elementos

v[0] = 3;

v[6] = 4;//Error

v[3] = 2;

for (int i=0; i < 6; i++)

v[i] = i;

• De objetosRacional v[] = new Racional[3];

//Si intentamos operar con Racionalesv[0].setNumerador(1);//Null pointer Exc//Es necesario crear los objetosv[0] = new Racional(1,1);

v[0].setNumerador(2);

//Se pueden crear todos los objetosfor (int i=0; i<v.length;i++)

v[i] = new Racional(1,1);

Ejemplo de arrays

0 0 0 0 0 0

0 1 2 3 4 5

3 0 0 2 0 0

null null null

ref null null 1 1

ref null null 2 1

Page 34: 1. Introducción

Programación II Tema 1 - Introducción

Arrays (4/5)

• Ejercicio: Indica qué se visualiza en cada caso por pantallaclass PruebaArrays{

public static void main(String[] args){

int[] a = new int[10];String[] b = new String[10];System.out.println("Longitud: " + a.length);for (int i=0;i<a.length;i++)

System.out.println(a[i]);System.out.println("Longitud: " + b.length);for (int i=0;i<b.length;i++)

System.out.println(b[i]);for (int i=0;i<b.length;i++)

b[i]=new String("" + i);for (int i=0;i<b.length;i++)

System.out.println(b[i]);}

}

Page 35: 1. Introducción

Programación II Tema 1 - Introducción

Arrays Multidimensionales (5/5)

• Arrays Multidimensionales– Los arrays multidimensionales no son más que arrays donde

cada elemento es a su vez otro array (arrays de arrays)– El número de dimensiones lo indica el número de corchetes:

int [][] v1; //ref. a array de 2 dimint [][][] v2; //ref. a array de 3 dim

– A la hora de crear el array se indicará el tamaño de cada dimensión:

v1 = new int[10][20] ; //array de 10 x 20v2 = new int[6][4][5];

– Para acceder a un elemento de un array multidimensional:v1[3][4] = 5;v2[3][2][2] = 6;

– Longitudes con length:v1.length -> 10 (primera dimensión)v1[0].length -> 20 (segunda dimensión)v2[0][0].length -> 5 (etc.)

Page 36: 1. Introducción

Programación II Tema 1 - Introducción

Ejemplos de Arrays (1/2)class QueHago{

public static void main(String[] args){

String[][] arrayOfStringArrays = new String[5][];for (int i=0;i<arrayOfStringArrays.length;i++){

String[] nuevoArray = new String[10];arrayOfStringArrays[i] = nuevoArray;for (int j=0;j<nuevoArray.length;j++)

nuevoArray[j] = new String(“(”+i+“,”+j+”)”);}for (int i=0;i<arrayOfStringArrays.length;i++){

for (int j=0;j<arrayOfStringArrays[i].length;j++)System.out.print(arrayOfStringArrays[i][j]);

}}

}

Page 37: 1. Introducción

Programación II Tema 1 - Introducción

Ejemplos de Arrays (2/2)class HolaConTiempo{

static int contInstancias = 0;static HolaConTiempo[] instancias =new HolaConTiempo[10];int num;long tiempoCreacion;HolaConTiempo(){

num = ++contInstancias;tiempoCreacion = System.currentTimeMillis();

}void saludar(){

System.out.println(“¡Hola! Soy la instancia “ + num + “ y he nacido en el milisegundo “ + tiempoCreacion);}public static void main(String args[]){

//Creamos las 10 instanciasfor (int i=0;i<10;i++)

instancias[i] = new HolaConTiempo();//Que saluden las 10 instanciasfor (int i=0;i<10;i++)

instancias[i].saludar();} }

Page 38: 1. Introducción

Programación II Tema 1 - Introducción

Contenedores

• Una clase puede tener el objetivo de guardar objetos de otras clases– ¡un objeto que guarda objetos!– Eso es un contenedor

• Un array es un contenedor

– Podemos definir nuestros propios contenedores• Ver ejemplo (Pastillero.java)

Page 39: 1. Introducción

Programación II Tema 1 - Introducción

Otros aspectos: Comparación

• Dos objetos se comparan por referencias– if (o1 == o2) ...

• Para comparar por valores:– equals(Object o)– Definido en Object (todos lo tienen)– if (o1.equals(o2)) ...

• ¿Comparación >,<?– Método int compareTo(Object o)

• Devuelve -1, 0, +1• No con todas las clases (ver interfaces)

Page 40: 1. Introducción

Programación II Tema 1 - Introducción

Otros aspectos: javadoc

• Utilidad incluida en JDK• Permite integrar la documentación de

una clase con el código de la misma• Basada en comentarios con sintaxis

fija– Inicio en /** en lugar de /*

• Utilidad: javadoc.exe– Genera .html integrable con doc. java

Page 41: 1. Introducción

Programación II Tema 1 - Introducción

Sintaxis comentarios

• Justo antes de la clase o del método• Primera línea: descripción corta

resumen (summary)• Comentarios de los parámetros con

@param• Referencias a otras clases métodos

@see• Retornos de párrafo con <p>• Otras posibilidades, como hiperenlaces

( {@link OtraCosa} )

Page 42: 1. Introducción

Programación II Tema 1 - Introducción

Javadoc - ejemplo/**

Clase de ejemplo javadoc. Utiliza la clase {@link String}.<p>*/public class Ejemplo {

/** Devuelve una palabra a partir de un num. dado y de un gestor de ejemplos. El parámetro pista debe referenciar a una cadena válida. <p> Este método devuelve, de todas las palabras del gestor indicado, aquéllos cuyo valor no es nulo, ordenados por su nombre. Si no hay ninguno, devuelve una lista vacía. @param numero índice válido de string (si no es válido, se devuelve string vacío) @param inicio gestor de ejemplos fuente de datos @return palabra índice del gestor de ejemplos @see #ponePalabra(String) @see GestorEjemplos @version 20090101 @since 0.3*/ public String devuelvePalabra( int numero, GestorEjemplos inicio ) {

return ""; }

Page 43: 1. Introducción

Programación II Tema 1 - Introducción

Visión documentación (1)

Page 44: 1. Introducción

Programación II Tema 1 - Introducción

Visión documentación (2)

Page 45: 1. Introducción

Programación II Tema 1 - Introducción

Ejercicios propuestos (1/4)• Ejercicio 1:

– Solucionar los problemas de la siguiente clase, reescribiéndola para que se compile correctamente.

class HolaMundo2{

int cont;public static void main( String args[] ){

cont = 0;HolaMundo2 a = new HolaMundo2();HolaMundo2 b = new HolaMundo2();HolaMundo2 c = new HolaMundo2();a.saludar();b.saludar();c.saludar();

}HolaMundo2(){

cont++;}void saludar(){

System.out.println(“Hola, soy la instancia " + cont );}

}– Modificarla para que cada instancia indique su número secuencial. No se puede

cambiar el método main (excepto la primera sentencia, aunque no es necesario).

Page 46: 1. Introducción

Programación II Tema 1 - Introducción

Ejercicios propuestos (2/4)

• Ejercicio 2: – Crear una clase Vaca que tenga:

– Atributos: color de pelo (String), edad (entero), nombre (String) • Métodos:

– debes elegir tres constructores diferentes – Muu: método que hace que la vaca muja y diga su nombre y

color de pelo "Muuu...mi nombre es XXX y mi color de pelo es YYY"

– CompararEdad: dadas las edades de dos vacas (la que envía el mensaje y otra como parámetro) saca el nombre de la vaca más antigua "La vaca XXX es más vieja que la vaca YYY"

• Programa principal: – Crear tres instancias de la clase Vaca, llamadas miVaca1,

miVaca2 y miVaca3. Para cada una de ellas utilizar un constructor diferente.

– Hacer que las tres mujan.– Comparar la edad de miVaca1 y miVaca2.– Modificar el programa para que cada vez que se cree una

instancia de la clase vaca salga un mensaje indicando el número de vaca creada: "Se ha creado la vaca 1", etc.

Page 47: 1. Introducción

Programación II Tema 1 - Introducción

Ejercicios propuestos (3/4)

• Ejercicio 3:– Modificar la clase HolaMundo, llamándola HolaMundoAMedias:

(Hacerlo utilizando los métodos más apropiados de String)• para que se parta de una variable String que contenga " ¡Esta es la

cadena Hola Mundo... a medias! ". • posteriormente debe eliminar los espacios del inicio y del final. • finalmente, quitar el substring que sobra para dejar simplemente

"¡Hola Mundo... a medias!", que debe ser el String visualizado. – Ayudas para la realización del ejercicio: – El método de instancia trim() de la clase String elimina espacios en

blanco de los extremos de un String. – El método de instancia subString (inicio, fin) de la clase String devuelve

los caracteres de inicio a fin del String. – El método de instancia indexOf(subString) de la clase String indica en

qué posición se encuentra la primera ocurrencia del subString en el String que llama al método.

• Ejercicio 4: – Describe con tus palabras todos los pasos desde la edición

hasta la ejecución, los problemas que pueden surgir y cómo solucionarlos.

– ¿Qué ficheros y programas son necesarios en cada etapa?– ¿Cuál es el conjunto mínimo de ficheros y programas

necesarios para la ejecución final de un programa Java?

Page 48: 1. Introducción

Programación II Tema 1 - Introducción

Ejercicios Propuestos (4/4)

• Ejercicio 5: – Escribir un programa que coja todos los parámetros de la línea de

comandos, si los hay, y los muestre por pantalla, uno en cada línea, indicando con un solo asterisco después de cada uno si está repetido (es decir, si algún otro parámetro previo es un String igual)

• Ejercicio 6:– ¿Por qué el siguiente trozo de código produce un error de compilación?

¿Cuál es la diferencia entre a y c?class Inicializacion{

static int a;public static void main(String[] args){

int c;int b=17;if ( b!= 0)

System.out.println(b);else{

System.out.println(a);System.out.println(c);

}}

}