0% encontró este documento útil (0 votos)
5 vistas21 páginas

Introducción a Java: Programación POO

Este documento describe un folleto de trabajos prácticos sobre la programación orientada a objetos en Java. Contiene explicaciones sobre conceptos básicos del lenguaje Java como la compilación, la ejecución, los tipos de datos y las estructuras de control. El documento también describe cuatro ejercicios prácticos sobre estos conceptos.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas21 páginas

Introducción a Java: Programación POO

Este documento describe un folleto de trabajos prácticos sobre la programación orientada a objetos en Java. Contiene explicaciones sobre conceptos básicos del lenguaje Java como la compilación, la ejecución, los tipos de datos y las estructuras de control. El documento también describe cuatro ejercicios prácticos sobre estos conceptos.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad de Cartago Departamento de Informática y Telecomunicaciones

Instituto Superior de Ciencias Aplicadas y Tecnología


Mateur

Fascículo TP
Programación Orientada a Objetos
(Lenguaje Java)

` ann´ee SEIoT/IRS
Para los estudiantes de 2eme

AymenFerjani
[Link]@[Link]

Año académico 2021/2022


RESUMEN
Página

TP1: Introducción al lenguaje Java 1

TP2: Introducción al lenguaje Java (continuación) 6

TP3: Conceptos básicos de la orientaciónel


´ objeto 10

TP4: Hh́erencia, Polimorfismo y clase abstracta 13

TP5: Impl´
implementación de interfaces y gestión de excepciones 18
Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

TP1: Introducción al lenguaje Java


Objetivos

Compilación y ejecución de un programa Java.


— Entrada de valores.
— Paso de valores en línea de comandos (argumentos).
— Utilización de estructuras condicionales y iterativas.

1 Notas de clase
1.1 Compilación y ejecución de un programa Java
Antes de comenzar a escribir código Java, es necesario instalar un JDK (Java Development Kit)
kit de desarrollo) para poder compilar y ejecutar nuestro código.
La escritura de un código fuente Java debe hacerse en un archivo con la extensión .java.
la compilación de este último generará otro archivo con la extensión .classet que contiene
pseudo-código. Es este archivo que es interpretado y ejecutado por la máquina virtual de Java (JVM).
La JVM es una parte integral del JDK.
La compilación y la ejecución de un archivo Java se pueden hacer de dos maneras diferentes,
ya sea con un IDE (Entorno de Desarrollo Integrado), o bien con una consola.

1.1.1 Con un IDE


Existen varios IDE de Java en el mercado, como por ejemplo NetBeans, Eclipse,
IntelliJ, etc. La escritura del código a menudo está asistida así como la compilación y la ejecución que
se lanzan con un simple clic.

1.1.2 En modo consola


Con la consola, es necesario conocer el comando de compilación (ejemplo javac)
porque existen varios compiladores para Java. Sin embargo, la ejecución siempre se lleva a cabo
con el comando java seguido del nombre de la clase (sin la extensión). Aquí hay un ejemplo de
compilación y ejecución de un archivo Java con la consola de Linux :

DossierDeTravail$ javac [Link]


DossierDeTravail$ java Hola
Hola a todos

1.2 Estructura base de un archivo Java


public class NombreDeLaClase{
Los atributos (propiedades) de esta clase
...
// Los métodos de esta clase
...
El método principal main debe estar presente en una sola clase del proyecto
public static void main(String[] args) {
...
}
}

Aymen FERJANI página 1 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et Télécops
Programación Orientada a Objetos2eme
`
SEIoT/IRS

Un archivo fuente de Java contiene una o varias clases, pero solo una clase declarada.
publique. El nombre del archivo debe corresponder al nombre de esta clase.
— Si el proyecto desarrollado está compuesto por un solo archivo, entonces este último debe contener
la método principal/main.
— En programación procedural, los métodos son vistos como funciones.
— El método principal siempre debe tener la siguiente firma:

public static void main(String[] args)

1.3 Tipos primitivos de las variables

Tipo Significación

int Entero comprendido entre -231et 231-1.

doble Código real en 64 bits.

carácter Carácter

booleano Bool'een

Observación
— También existen los tipos byte, short y long que son tipos enteros.
— También se encuentra el tipo float que representa un número real.

— Para las cadenas de caracteres, es preferible utilizar la clase String (que no es un


tipo primitivo).

1.4 Estructuras condicionales e iterativas


Las estructuras condicionales e iterativas del lenguaje C se replican en Java. Así,
encuentra las estructuras condicionales if y switch, pero también las estructuras repetitivas for y do
Mientras que. También existe un bucle llamado foreach práctico para recorrer y mostrar
los elementos de una tabla o de una colección:

int[]tab={20,-9,13,100,5};
// recorre y muestra cada elemento del arreglo tab
por(intx: tab) {
[Link](x);
}

Aymen FERJANI página 2 de 19 AU: 2021/2022


Fascículo TP Departamento Informático
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

1.5 Entrada de valores


A partir de la versión Java 5, es posible operar la entrada de valores gracias a la clase
Escáner. Aquí hay un ejemplo:

import [Link];// Importar la clase Scanner para la entrada

clase pública ExempleSaisie {


public static void main(String[] args) {
String cadena;
intx;
doblemente;
// Creación de un objeto Scanner
Scanner lectureClavier=new Scanner([Link]);

Mostrar un mensaje antes de la entrada


[Link]("Donar una cadena de caracteres: ");
Entrada de una cadena de caracteres
chaine=[Link]();

// Mostrar un mensaje antes de la entrada


[Link]("Ingrese un entero: ");
Ingreso de un entero
x=[Link]();

Mostrar un mensaje antes de la entrada


[Link]("Dar un real: ");
Entrada de un real
y=[Link]();
}
}

1.6 Paso de valores en la línea de comandos (argumentos)


Sea la claseTestsuivante :
clase pública Prueba{
public static void main(String[] args) {
[Link]("El primer argumento es " + args[0]);
[Link]("El segundo argumento es " + args[1]);
[Link]("El tercer argumento es " + args[2]);
}
}

El paso de argumentos a este programa en modo consola se realiza así:

DossierDeTravail$ java Test bonjour158hello


El primer argumento es hola
El segundo argumento es 158
El tercer argumento es hello

Aymen FERJANI página 3 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

2 Ejercicios prácticos
Para cada ejercicio, se creará un nuevo proyecto.

Ejercicio 1
Crear la clase Hello con el siguiente código, luego probarla:

clase pública Hola{


public static void main(String[] args) {
[Link]("Hola a todos");
}
}

Ejercicio 2
Crear la clase Ex2, luego:
´
1. Escribir el método público int adición(int x, int y, int z) que devuelve la suma de 3
entiersx,yetz.
2. Añadir el método público int max(int x, int y, int z) que retorna el máximo entre
3 enteros x, y, z.
3. Añadir el método público booleano primo(int x) que verifica si x es un número primo.
primer o no.
4. Probar estos 3 métodos de la siguiente manera:

importar [Link];
public class Ex2{
//Definiciones de los métodos de las preguntas 1, 2 y 3
...
public static void main(String[] args) {
Scanner saisie = new Scanner([Link]);
inta, b, c;
[Link]("Donar 3 enteros: ");
a=[Link]();
b=[Link]();
c=[Link]();
Ex2 obj=nuevoEx2();//Creación duna instancia de la clase Ex2
[Link](a+"+"+b+"+"+c+"="+[Link](a, b, c));
[Link]("El máximo de los 3 enteros es " + [Link](a, b, c));
si([Link](a)) {
[Link](a + " es un número primo");
}
else{
[Link](a + " nno es un número primo);
}
}
}

Aymen FERJANI pagina 4 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

Ejercicio 3
Éscribir un programa que calcule y muestre la suma y el producto de 4 enteros pasados en
argumentos.
Para cada argumento, usar el método predefinido [Link](x) para obtener un
a partir de este argumento.

Ejercicio 4
´
Escribir un programa que permita leer un entero positivo introducido en la línea de comandos
y de mostrarlo en forma binaria.

Aymen FERJANI página 5 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

TP2: Introducción al lenguaje Java (continuación)

Objetivos

— Introducción de valores.

— Paso de valores en la línea de comandos (argumentos).


— Utilización de estructuras condicionales y iterativas.
— Manipulación de tablas.

1 Notas de curso
1.1 Creación y manipulación de un arreglo de tamaño fijo
La creación de un array de tamaño fijo se realiza mediante la siguiente instrucción:

tipo[]nomTabla=newtipo[NumeroElementos];

Aquí, 'tipo' designa un tipo base o bien una clase. Aquí hay un ejemplo:

Creación de un arreglo de 5 enteros


int[]tab=newint[5];

También se puede crear e inicializar un array al mismo tiempo. Ejemplo:

// Creación e inicialización de un arreglo de 3 enteros


int[]x={9,45,-22};

La manipulación de los arreglos en Java es idéntica a la del lenguaje C, con


la ventaja de poder conocer el tamaño de un arreglo gracias al atributo length.

1.2 Ejemplo
// Creación e inicialización de un arreglo de 4 reales
double[]tab={12.0,2.6,0.5,100.11};

tab[2] = -16.125;// modifie lelemento de índice 2

// Visualización de los elementos del arreglo


// [Link] devuelve el tamaño del array
para(int i = 0; i < [Link]; i++) {
[Link](tab[i]);
}
/* o bien con un bucle foreach:
for(double x : tab) {
[Link](x);
} */

Aymen FERJANI página 6 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

2 Ejercicios prácticos
Ejercicio 1
Éscribir la clase Año con un método que permita determinar si un año es bisiesto
Una año es bisiesto si se tiene uno de los dos siguientes casos:
El año es divisible por 4 y no divisible por 100.
— El año es divisible por 400.

Ejercicio 2
Éscribir la clase DíaSemana con un método que, a partir de un entero que representa un
día de la semana (entre 1 y 7), muestra el nombre correspondiente de este día.
Ejemplos:
jour = 1 =>Affichage : ”C’est lundi”
jour = 2 =>Affichage : ”C’est mardi”

Ejercicio 3
Éscribir un programa que permita leer 2 argumentos que son un entero positivo (denotado como n) y
una cadena de caracteres, luego muestra esta cadena n veces (en líneas diferentes).
Por ejemplo, si el usuario pasa como argumentos "5" y "Hola", tendremos la visualización que sigue.
vant

Hola1vez

Bonjour2fois

Bonjour3fois

Bonjour4veces

Bonjour5fois

Ejercicio 4
Éscribir la clase Perfecta con un método que toma un entero positivo y indica si este último
es un número perfecto o no. Un número perfecto es igual a la suma de sus divisores propios.
(salvo él mismo).
Ejemplos de nombres perfectos:
6=1+2+3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248

Ejercicio 5
Éscribe un programa que calcule y muestre la suma de los enteros pasados como argumento.

Ejercicio 6
Éscribir la clase Par que tenga 2 métodos. El primero permite llenar un arreglo de enteros.
El segundo muestra los elementos pares de un arreglo de enteros.

Aymen FERJANI página 7 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a Objetos2eme
`
SEIoT/IRS

importar [Link];
clase pública Par{
public void rellenarTab(int[] t)
{/* llenar t con enteros introducidos */}
public void affichagePar(int[] t)
{/* mostrar los elementos pares de t */}

public static void main(String[] args) {


intn;
Scanner saisie=new Scanner([Link]);
haz{
[Link]("Donar el tamaño del arreglo(>=2): ");
n=[Link]();
}
mientras(n< 2);
inttab[] = new int[n];//Creación dun tableau de n entiers
Par p=newPair();//Creación duna instancia de la clase Pair
[Link](tab);
[Link]("Mostrar los elementos pares del arreglo:");
[Link](tab);
}
}

Ejercicio 7
Éscribir la clase Tabayant 3 métodos. El primero permite crear un array de enteros de
talla (`a saisir) y llenarlo. El segundo muestra los elementos de un arreglo de enteros. La
devuelve el elemento más grande de un arreglo de enteros.

importar [Link];
clase pública Tab {
public static int[] creaciónTabla() {
/* [Link] el tamaño del arreglo, creación del arreglo
2. llenar la tabla a partir de enteros ingresados
[Link] esta tabla */}

public static void affichageTabla(int[] t)


{/* mostrar los elementos del arreglo t */}

public static int maxTableau(int[] t)


/* retornar lel elemento más grande de t}

public static void main(String[] args) {


Tab tab=newTab();//Creación duna instancia de la clase Tab
intt[] =[Link]´acionTabla();
[Link]("Visualización de los elementos del arreglo:");
[Link](t);
[Link]("El máximo del arreglo es " + [Link](t));
}
}

Aymen FERJANI página 8 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et Telécoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

Ejercicio 8
Éscribir un programa que cree y rellene un array de reales a partir de los argumentos, luego
invierte esta tabla y muestra sus elementos.

Ejercicio 9
Éscribir un programa que capture y complete un arreglo de cadenas de caracteres, luego capture
una cadena e indica si esta cadena se encuentra en el arreglo. En el caso de que la cadena exista,
el programa también deberá mostrar su posición en la tabla.
Nota: Utiliza el método [Link](cadena) para comparar entre dos cadenas.
Ejemplos:

bonjour
[Link](ch2)// devuelve true
[Link](ch3)// devuelve falso

Ejercicio 10
Éscribir un programa que permita ingresar y llenar los elementos de un arreglo.
de enteros, luego realiza el ordenamiento por selección en orden ascendente en este arreglo, y finalmente muestra
el cuadro.
Príncipe :
Para cada elemento tab[i], determinar el índice del menor elemento a la derecha de tab[i]
(más pequeño que tab[i]), luego permutar tab[i] y tab[min]. Si no se encuentra un elemento más
si pequeño quetab[i], entonces ninguna permutación se lleva a cabo.

Aymen FERJANI página 9 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a Objetos2eme
`
SEIoT/IRS

TP3: Conceptos básicos de la programación orientada a objetos

Objetivos

— Crear clases, instanciar objetos y llamar métodos.


— Comprender el principio de encapsulación de datos.

1 Ejercicios prácticos
Ejercicio 1
Se desea modelar un punto en un plano con un sistema de coordenadas ortonormado.
´
1. Escribir la clase Punto que contenga los atributos necesarios así como un constructor que acepte
des parámetros.
2. Agregar otro constructor sin parámetros que inicialice un punto en la posición (0,0).
3. Para cada atributo, agregar un método accesor (get) para devolver el valor de
el atributo, y un método mutador (set) para modificar el valor del atributo.
4. Añadir el método público void modificarCoord(double x, double y) que
permite modificar las coordenadas de un punto.
´
5. Escribir el método público booleano mismaPosición(Point p) que verifica si un punto tiene las
mes coordenadas que el punto p.
´
6. Escribir el método público booleano esSimétrico(Point p) que verifica si un punto es
simétrico al punto p respecto al origen del sistema de referencia (0,0).
7. Añadir el método público double distance(Point p) que permite calcular y
retornar la distancia entre un punto y el punto p según la siguiente fórmula:
(x−xp )2+ (y−yp )2
p
Utilizar los métodos predefinidos [Link](x, 2) para calcular el cuadrado de un x y [Link](x)
para la raíz cuadrada de un x.
8. En el mismo paquete, crear la clase TestPoint que contenga el método main para
probar los métodos de la clase Punto:
clase pública TestPoint
{
public static void main(String[] args)
{
Punto p1=nuevoPunto(5,3);
Punto p2=newPoint();
[Link]("p1("+[Link]()+","+[Link]()+")");
[Link]("p2("+[Link]()+","+[Link]()+")");
[Link](5,10);
[Link]("p2("+[Link]()+","+[Link]()+")");
si(![Link](p2))
[Link]("p1 y p2 n"no tienen la misma posición);
Punto p3=nuevoPunto(-5,-3);
[Link]("p3("+[Link]()+","+[Link]()+")");
si([Link]étrico(p3))
[Link]("p1 y p3 son simétricos");
[Link]("La distancia entre p1 y p2 es " + [Link](p2));
}
}

Aymen FERJANI página 10 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a Objetos2eme
`
SEIoT/IRS

Ejercicio 2
Se desea modelar una fecha caracterizada por un día, un mes y un año.
´
1. Escribir la clase Fecha con los atributos necesarios así como un constructor que
inicializa una fecha.
2. Para cada atributo, agregar un método accesador (get) para devolver el valor de
el atributo y un método mutador (set) para modificar el valor del atributo.
3. Redefinir la método public String toString() que retorna una fecha en la forma:
día/mes/año
4. Añadir el método privado booleano annéeBissextile() que verifique si el año de una fecha
¿Es año bisiesto o no? Un año es bisiesto en los siguientes casos:
— Ella es divisible por 4 y no por 100.
— Es divisible por 400.
5. Añadir el método privado int nombreJoursDuMois() que devuelve el número de días
del mes (ejemplo: mes = 1⇒número de días = 31). Usar el método anterior.
´
6. Escribir el método público booleano estValide() que permite verificar si una fecha es válida.
correcto o no. Usar el método anterior.
7. Añadir el método público booleano másReciente(Date d) que indica si una fecha es
más reciente que la fecha de.
8. En el mismo paquete, crear la clase TestDate que contenga el método main para probar
los métodos de la clase Date:
clase pública TestDate
{
public static void main(String[] args)
{
Fecha d1=nuevaFecha(28,2,2018);
si([Link]())
[Link](d1 + " es válido");
Fecha d2=newFecha(30,2,2017);
si(![Link]())
[Link](d2+" nno es válido);
Fecha d3=newDate(17,10,2020);
si([Link](d1))
[Link](d3 + " es más reciente que " + d1);
}
}

Ejercicio 3
Se desea modelar una pila de enteros almacenada en forma de un arreglo.
1. Definir la clase Pileayant como atributos un entero taille (la taille de la pile), un
otro entero denominado tailleMax (la tamaño máximo de la pila, una constante) y un array
de enteros nombrem.
2. Añadir un constructor, que tome un parámetro entero llamado, que inicialice tamaño a cero
tamañoMax`an, luego crea el array con el tamaño tamañoMax.
3. Añadir el método de acceso público int getTaille() que permite devolver el tamaño de
la pila.
´
4. Escribir el método público booleano estVide() que indica si la pila está vacía o no.
5. Agregar el método público booleano estPleine() que indica si la pila está llena o no.

Aymen FERJANI página 11 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

6. Agregar el método public void a fficher() que muestra los elementos de la pila.
´
7. Escribir el método público void empilar(int x) que añade x al final de la pila e incrementa
retire 1 si la pila no está llena. Mostrar un mensaje si la pila ya está llena.
´
8. Escribir el método público void depilar() que depile el último elemento (basta con
decrementar la talla de 1) si la pila no está vacía. Mostrar un mensaje si la pila ya está
vide.
9. En el mismo paquete, definir la clase TestPile con el método main y probar los
métodos de la clase Pila.

Ejercicio 4
Se desea modelar una lista enlazada compuesta por varios nodos donde cada nodo
contiene un entero.
´
1. Escribir la claseNoeud teniendo como atributos un entero y una referencia sobre el nodo
siguiente nombrado siguiente(tipoNoeud).
2. Agregar un constructor a la clase Nodo, que tome un parámetro entero, que inicialice val
a la valeur del parámetro. La referencia siguiente apuntará a nulo.
3. Añadir métodos accesores y mutadores a la clase Nodo que permiten recuperar
y modificar los atributos de esta clase.
4. Agregar, en el mismo paquete, la clase Lista con como atributos una referencia sobre la
Cabeza de lista llamada etete(tipoNoeud) y un entero taille que es el tamaño de esta lista.
5. Agregar un constructor a la clase Lista, sin parámetro, que inicialice la referencia cabecera
.orecaèlliattellunà
6. Agregar métodos accesores y mutadores a la clase Lista que permitan recuperar la
cabeza y la talla y de modificar únicamente la cabeza.
7. Añadir el método público booleano estáVacio() que indica si la lista está vacía o no.
8. Añadir el método público void mostrar() que recorre la lista y muestra los valores de
sus nodos.
9. Añadir el método público void agregarEntero(int val) que añade un nodo, que tiene el
valor entero, al final de la lista e incrementado en 1.
10. Escribir ´ el método público void eliminarEntero(int val) que elimina el primer nodo
rencontré depuis la tête ayant la valeur val, et décrémenté à l'aide de 1 si ce nœud a été
encontrado.
11. En el mismo paquete, agregar la clase TestListe que contiene el método main con el
código siguiente:
Liste lst=newListe();
[Link](15);
[Link](-9);
[Link](5);
[Link](-26);
[Link](42);
[Link]();
[Link]("Supresión de -26 luego 15:");
[Link](-26);
[Link](15);
[Link]();
[Link]("Añadiendo 103:");
[Link](103);
[Link]();
[Link]("La lista contiene " + [Link]() + " nodos");

Aymen FERJANI página 12 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a Objetos2eme
`
SEIoT/IRS

TP4: Patrimonio, Polimorfismo y clase abstracta


Objetivos

— Utilización de la herencia.
— Comprender el polimorfismo.
Comprender la utilidad de una clase abstracta.
— Creación y uso de una tabla dinámica.

1 Notas del curso


1.1 Creación y manipulación de un arreglo dinámico
Para crear un arreglo de tamaño variable, se puede usar la clase ArrayList:
// Importar la clase ArrayList al principio del archivo
importar [Link];
...
// Creación de un array dinámico de String
ArrayList<String>tab=new ArrayList<>();

Hay que tener en cuenta que esta clase no permite crear arreglos de tipos primitivos.
Para remediar esta falta, se pueden usar las clases envolventes.

1.2 Clases envoltorios (Wrappers)


Las clases envolventes o wrappers encapsulan los tipos primitivos. Cada tipo primitivo
posee, por lo tanto, su clase que le permite comportarse como un objeto:

Tipo primitivo Clase envolvente


booleano Booleano
carácter Personaje
byte Byte
corto Corto
int Entero
largo Largo
flotar Flotar
doble Doble

1.3 Algunos métodos de la clase ArrayList


Aquí hay algunos métodos prácticos de la clase ArrayList:

Aymen FERJANI página 13 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a Objetos2eme
`
SEIoT/IRS

Método Rol
agregar(Objecte) Agrega el objeto al final de la tabla.

agregar(inti, Objeto) Agrega el objeto al índice del tableau.

eliminar(inti) Suprime el elemento con el índice en la tabla.

tamaño() Devuelve el tamaño del arreglo.

obtener(inti) Devuelve el elemento del arreglo que tiene el índice i.

establecer(inti, Objeto) Afecte el objeto al índice del tableau.

1.4 Ejemplo
// Importar la clase ArrayList al principio del archivo, justo después del paquete
importar [Link];
...
ArrayList<String>tab=new ArrayList<>();

[Link]("Hola");
[Link]("Hola");
[Link](0,"Coucou");// añade al inicio del array
Adiós
[Link]("Gracias");

[Link](2);// suprime lelemento de índice 2 ("saludo")

for(int i = 0; i < [Link](); i++) {// recorre el array


[Link]([Link](i));// muestra cada elemento
}

2 Ejercicios prácticos
Ejercicio 1
Una empresa desea gestionar la lista de sus empleados con una aplicación Java. Hay
principalmente dos tipos de empleados: los ejecutivos y los trabajadores.
1. Sabiendo que un empleado se describe por su matrícula, su nombre, su edad y su salario, definir
la clase Empleado que tiene un constructor con parámetros que inicializa todos sus atributos.
2. Añadir un atributo entero estático número inicializado a 0 y que será incrementado en 1
cada vez que se crea un empleado.
3. Agregar los métodos getEdad, getSalario y setSalario, así como el método estático
obtenerNombre
4. Redefinir el método public toString que retorna la información de un empleado según
esta forma:
matrícula
E10268 Ahmed SASSI, 34 años, 1200 dt

Aymen FERJANI página 14 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a Objetos2eme
`
SEIoT/IRS

5. Definir, en el mismo paquete, la clase Ouvrier sabiendo que un obrero tiene los mismos
propiedades de un empleado. Agregar un constructor con parámetros que inicializa los valores
de atributos.
6. Definir, en el mismo paquete, la clase Cadre sabiendo que, además de las propiedades de un
empleado, cada directivo tiene una función. Agregar un constructor con parámetros que
inicializar los valores de los atributos.
7. Redefinir el método toString en la clase Ouvrier añadiendo la palabra "Ouvrier" a la
fin de la chaîne retournée. Exemple:
E10270 Mounir DRIDI, 36 años, 900 dt, Obrero

8. Redefinir el método toString en la clase Cadre añadiendo la función del marco a


el fin de la cadena devuelta. Ejemplo:
E10268 Ahmed SASSI,34 años,1200 dt, Analista

9. La empresa ha decidido aumentar los salarios de sus empleados según esta fórmula:
— Para los trabajadores, un aumento de 100 dt.
— Para los marcos:
— Un aumento de 200 dt si la edad es inferior a 35 años.
— Un aumento de 300 dt si la edad está entre 35 años y 45 años.
— Un aumento de 400 dt para los demás.
Declarar el método abstracto público aumentar en la clase Empleado. Así, la
La clase Empleado se convertirá en abstracta, y el método aumentar deberá estar definido en
las clases Ouvrier y Cadre.
10. Con el fin de probar estas clases y sus métodos, crear, en el mismo paquete, la clase
TestEmpleado teniendo el método main con el siguiente código:
Empleá[]lista=newEmpleá[5];
liste[0] =newCadre("E10268","Ahmed SASSI",34,1200,"Analyste");
liste[1] =newCadre("E10269","Ridha DRIDI",46,1350,"Comptable");
liste[2] = newOuvrier("E10270", "Mounir DRIDI", 36, 900);
newOuvrier("E10271","Alia ARBI",29,850);
liste[4] =newCadre("E10272","Amal TOUATI",38,1850,"Directeur RH");

para(int i = 0; i < [Link]; i++) {


liste[i].aumentar();
[Link](liste[i]);
}

[Link]("Se ha creado " + Employé.getNombre() + " empleados");

11. Transformar la tabla en ArrayList.

Aymen FERJANI página 15 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et Télémobiles
Programación Orientada a Objetos2eme
`
SEIoT/IRS

Ejercicio 2
Se quiere modelar los conceptos vehículo, coche y avión.
1. Definir la clase Vehículo que tiene como atributos información válida para todo tipo
de vehículo: su modelo, su año de compra, su precio de compra y su precio actual.
2. Agregar un constructor con 3 parámetros (modelo, año de compra y precio de compra) que
inicializa todos estos atributos. El precio actual se fijará al precio de compra.
3. Redefinir el método toString que retorna la información de un vehículo según la forma
siguiente:
modelo
Peugeot 206, 2005, 16000 dt, 12000 dt

4. Añadir los métodos accesores y mutadores getAñoCompra, getPrecioCompra


setPrixCouant.
5. Definir, en el mismo paquete, la clase Coche que hereda de Vehículo y que tiene los
atributos adicionales siguientes:
nombre de puertas
— potencia física
kilometraje
Agregar un constructor con parámetros que inicialice todos los atributos. Una vez más, el
el precio corriente se fijará al precio de compra.

6. Definir, en el mismo paquete, la clase Avion que también hereda de Vehiculo y que tiene
los atributos adicionales siguientes:
nombre de pasajeros
horas de vuelo
Añadir un constructor con parámetros que inicialice todos los atributos. Aquí también, el
el precio corriente se fijará al precio de compra.
7. Redefinir el método toString en la clase Coche añadiendo la información correspondiente
a la voiturea la fin de la chaîne retournée. Exemple:
PEUGEOT206

8. Redefinir el método toString en la clase Avión añadiendo la información propia


a la avion la fin de la cadena devuelta. Ejemplo:
CESSNA CITATION II

9. Declarar el método abstracto public modificarPrecioActual(int añoActual) en


la clase Vehículo.
10. Definir el método anterior en las dos subclases Coche y Avión de manera que
calcular el precio corriente en función de ciertos criterios, y actualizar el atributo
correspondiente al precio actual:
— Para un coche, el precio actual es igual al precio de compra:
— menos 2% por cada año desde la compra hasta el año actual.
— menos 1% por cada tramo de 10000 km recorridos.
— Para un avión, el precio corriente es igual al precio de compra menos el 3% por cada
tramo de 1000 horas de vuelo, y menos 1% por cada año desde la compra hasta
ann´eeActuelle.
Atención, en estos dos métodos, si el precio se vuelve negativo, entonces lo ponemos a cero.
Aymen FERJANI página 16 de 19 AU: 2021/2022
Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

11. Con el fin de probar estas clases y sus métodos, crear, en el mismo paquete, la clase
Prueba de vehículo con el método main con el siguiente código:
ArrayList<Vehículo>tab=new ArrayList<>();

[Link](newVoiture("PEUGEOT 206",2005,20000,4,5,200000));
[Link](newVoiture("SUZUKI SWIFT",2016,30000,4,4,38000));
[Link](newVoiture("FIAT 500",2010,20000,4,4,150000));
agregar(nuevoAvión("CESSNA CITATION II", 1982, 4000000, 9, 15300));
[Link](nuevoAvion("DAHER-SOCATA TBM 700",2001,3500000,5,18000));

for(V´ehicule v: tab) {// bucle foreach


[Link](2020);
[Link](v);
}

Aymen FERJANI página 17 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

TP5: Implementación de interfaces y gestión de


excepciones
Objetivos

— Crear e implementar interfaces.


— Gestionar las excepciones.

1 Ejercicio práctico
Queremos implementar el siguiente diagrama de clases:

Respetando los datos del diagrama:


1. Crear la interfaz Adicionable.
2. Definir la clase Reel que representa un número real.
El método plus(Object o) deberá retornar un nuevo objeto de tipo Real que represente
la suma de los dos reales (el objeto actual y el parámetro o).
3. En la m´etodo racineCarree() de la clase Reel, lanzar una nueva excepción (de tipo
Exception) con el mensaje "Imposible realizar la raíz del número negativo n" (n
reemplazar por el valor del real) cuando el número es negativo.
4. Definir la clase Complejo que represente un número complejo.
El método toString() deberá retornar la representación siguiente del número complejo:

(pReele + pImaginaire*i)
(5.2 + 3.6*i)

La méthode plus(Object o) deberá retornar un nuevo objeto de tipo Complejo que


representa la suma de los dos números complejos (el objeto corriente y el parámetro o).
5. Con el fin de probar estas clases y sus métodos, crear la clase Test que tenga el método main
con el siguiente código:

Aymen FERJANI página 18 de 19 AU: 2021/2022


Fascículo TP Departamento de Informática
et T´el´ecoms
Programación Orientada a ObjetosNivel: 2eme
`
SEIoT/IRS

Complejo c1 = nuevoComplejo(2, 3.6);


Complejo c2=newComplejo(5.1,10.22);
Complejo c3=(Complejo)c1.más(c2);
[Link](c1 + " + " + c2 + " = " + c3);

Reel r1=newReel(9.0);
Reel r2=newReel(-2.1);
intenta{
[Link]("La raíz cuadrada de " + r1 + " es " + [Link]());
}
catch(Exception e) {
[Link]([Link]());
}
intentar{

[Link]("La raíz cuadrada de " + r2 + " es " + [Link]());


}
catch(Exception e) {
[Link]([Link]());
}
Reel r3=(Reel)r1.más(r2);
[Link](r1 + " + " + r2 + " = " + r3);

6. Definir la excepción personalizada ExcepciónValorNegativo con el método redefinido


public String getMessage() que deberá retornar el mensaje "Imposible de realizar la"
raíz del número negativo n” (n debe ser reemplazado por el valor del real).
Modificar el método racineCarree() de la clase Reel para que levante esta excepción
cuando el número es negativo.
Modificar también el método de la clase Test reemplazando Exception por
ExcepciónValorNegativo.

Aymen FERJANI página 19 de 19 AU: 2021/2022

También podría gustarte