Semana 1 - ISW2-2025 - POO
Semana 1 - ISW2-2025 - POO
Ingeniería de Software 2
2025-1
Logro de la sesión
I
Introducción
A
Análisis Orientado a Objetos
INFORMACIÓN FUNCIONAMIENTO
COMPORTAMIENTO
A
Diseño Orientado a Objetos
Que es el Diseño
orientado a objetos ?
TRANSFORMA
Quien lo hace?
Ingeniero de software.
A
Conceptos del Diseño
Proceso
SOLID
Metodología
Abstracción
Métod
o
Refinamiento
A
Conceptos del Diseño
A
Arquitectura del software Jerarquía de control Estructura de datos
Conceptos del Diseño
A
Conceptos del Diseño
A
Procesosde
Proceso de Desarrollo
Desarrollo de
deSoftware
Software
Sistema de Software
Requisitos, Necesidades
¿ Cómo se hace ?
V- Waterfall Model –
Modelo V (Brook, 1986)
Waterfall Model – http://www.waterfall-model.com/
Modelo cascada (Royce, 1970)
http://www.waterfall-model.com/
A
Tipos de modelos de procesos
Modelo evolutivo
(Boehm en 1988)
Espiral
(Boehm en 1988)
A
Tipos de modelos de procesos
Modelo de Prototipos
A
II. Breve Tour por UML
Diagramas de UML
Los diagramas expresan gráficamente partes de un modelo
State
State
Use Case Diagramas de
Diagrams
Use Case Diagrams State
Use Case Diagramas de
Diagrams Clases State
Use Case Diagrams Diagramas de
Diagrams
Diagramas de
Diagrams Casos de Uso Diagrams
Diagrams Objetos
Secuencia
Scenario State
Scenario State
Diagramas de
Diagrams Diagramas de
Diagrams
Diagrams Diagrams
Colaboración Modelos Componentes
Scenario Component
Scenario Component
Diagramas de
Diagrams
Diagramas de
Diagrams Diagrams
Diagrams Distribución
Estados Diagramas de
Actividad
A
Modelo UML
Estructurales, Comportamiento,
Elementos Agrupación (paquetes), Anotación
(notas, comentarios)
• Bloques básicos
Dependencia, Asociación
Relaciones (Agregación), Generalización,
de construcción Realización
Especificaciones, Dicotomía,
• Mecanismos
Adornos (detalles),
Comunes
Mecanismos de Extensibilidad
A
Diagramas de Clase
A
Diagramas de Casos de Uso
A
Diagramas de Interacción
A
Diagramas de Estado
A
Diagramas de Actividades
A
Diagramas de Componentes
A
Diagramas de despliegue
A
Resúmen de Diagramas UML de un Sistema Software
Repository DocumentList
fetchDoc( )
sortByName( )
FileList
add( )
DocumentList
delete( )
Document
name : int
docid : int
numField : int
get( )
open( )
close( )
read( )
sortFileList( )
read() fill the
code..
FileManager
Document
fList create( )
fillDocument( )
add( )
delete( )
1
GraphicFile
rep
File FileList
Repository File
Use Case 2
Use Case 3
Diagramas de Clases Diagramas de Componentes
¹®¼°ü¸®
Ŭ¶óÀ̾ðÆ®.EXE
¹®¼°ü¸® ¾ÖÇø´
fileMgr : FileMgr gFile : GrpFile
Window s
NT
Solaris
¹®¼°ü¸® ¿£Áø.EXE
fileMgr : FileMgr Alpha
UNIX
ÀÀ¿ë¼¹ö.EXE
Window s
NT
IBM
Mainframe
Diagramas de Despliegue
Validar y Completar
Operación -Operador BO
Diagramas de Objetos
-K+ (interfaz)
-KBO
[ ok ] Calcular Flujos
de Caja
[error operación]
[ prima es en divisa ]
Generar Avances
para Extranjero
-Operador BO
-KBO
-Host: Liquidaciones (interfaz)
Enviar
Confirmación
Evalua
Confirmación
-KBO
-Host:SWIFT (interfaz)
-KBO
[ confirmación rechazada ]
Registrar Error
Diagramas Dinámicos
-Operador BO
-KBO (interfaz) [operación contratada]
Identificar
Motivo Rechazo
-Operador BO
Determinar Acciones
Correcion
[operacion no contratada]
Diagramas de Actividad
mainWnd fileMgr : document : gFile repository
user FileMgr Document
9: sortByName ( )
2: fetchDoc( )
mainWnd : MainWnd
3: create ( )
1: Doc view request ( )
4: create ( )
Writ ing 2: fetchDoc( )
add file [ numberOffile==MAX ] /
flag OFF 4: create ( ) gFile : GrpFile 5: readDoc ( )
8: fillFile ( )
Openning
ÈÀϰü¸®ÀÚ´Â Àоî¿Â 6: fillDocument ( )
user : Clerk ¹®¼ÀÇ Á¤º¸¸¦ ÇØ´ç ¹®¼
°´Ã¼¿¡ ¼³Á¤À» ¿äûÇÑ´Ù.
3: create ( )
6: fillDocument ( ) 8: fillFile ( )
close file
Closing È¸é °´Ã¼´Â ÀоîµéÀÎ 9: sortByName ( )
Reading °´Ã¼µé¿¡ ´ëÇØ À̸§º°·Î
Á¤·ÄÀ» ½ÃÄÑ È¸é¿¡
7: readFile ( ) º¸¿©ÁØ´Ù.
5: readDoc ( )
document : Document
repository : Repository
POO en JAVA
A
Declaración y tipos de datos primitivos
A
Ejemplo sobre declaración y tipos de datos primitivos
A
Operadores matemáticos estándar
A
Ejemplo sobre Incremento y decremento
public static void main(String[] args) {
int c = 15;
int x, y, z, w;
x = c++; // A x se asigna el valor de c y luego se incrementa c
y = c; // A y se asigna el nuevo valor de c ya incrementado
z = ++c; // A z se asigna el nuevo valor de c ya incrementado
w = c; // a w se asigna el mismo valor asignado a z
System.out.println(x + ", " + y + ", " + z + ", " + w);
}
A
Ejemplo sobre Conversión de tipos
public static void main(String args[]) {
// Conversión implícita o automática
short corto = 34;
int largo = corto;
// Conversión explícita o casting
long largaso = 2345L;
int cortito = (int) largaso;
// Promoción en expreciones
short a=45,b=98;
// Error de compilación cuando c = a+b; por posible pérdida de datos
short c = (short) (a+b);
}
A
Operadores relacionales en Java
A
Estructura if/else en Java
A
Ejemplo sobre if/else en Java
public static void main(String[] args){
// Dado dos números indicar cual es el mayor
java.util.Scanner entrada = new java.util.Scanner(System.in);
System.out.println("Ingrese el primer número: ");
int a = entrada.nextInt();
System.out.println("Ingrese el segundo número: ");
int b = entrada.nextInt();
if (a>b)
System.out.println("El mayor es: "+a);
else
System.out.println("El mayor es: "+b);
}
A
Ejemplo sobre if/else anidado en Java
public static void main(String[] args){
// Dado el número de mes indicar su cantidad de días
Scanner entrada = new Scanner(System.in);
System.out.println("Ingrese el número de mes: "); int mes = entrada.nextInt();
if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12){
System.out.println("El mes tiene 31 días");
} else if (mes==2){
System.out.println("El mes tiene 28 o 29 días");
} else if (mes==4 || mes==6 || mes==9 || mes==11){
System.out.println("El mes tiene 30 días");
}else { System.out.println("Número de mes invalido..."); }
}
A
Estructura Repetitivas en Java
While for
do
A
Ejemplo sobre while en Java
public static void main(String[] args) {
// Determinar el mayor de n números
Scanner entrada = new Scanner(System.in);
System.out.println("Ingrese n: "); int n = entrada.nextInt();
int i = 0; // Contador
int mayor = 0;
while (i < n) {
i++;
System.out.println("Ingrese un número: "); int numero = entrada.nextInt();
if (numero > mayor) mayor = numero;
}
System.out.println("El mayor de n números es: "+mayor);
}
A
Ejemplo sobre for en Java
public static void main(String[] args) {
// Determinar el mayor de n números
Scanner entrada = new Scanner(System.in);
System.out.println("Ingrese n: "); int n = entrada.nextInt();
int mayor = 0;
for (int i = 0; i < n; i++) {
System.out.println("Ingrese un número: "); int numero = entrada.nextInt();
if (numero > mayor) {
mayor = numero;
}
}
System.out.println("El mayor de n números es: " + mayor);
}
A
Ejemplo sobre do-while en Java
public static void main(String[] args) {
// Determinar el mayor de n números
Scanner entrada = new Scanner(System.in);
System.out.println("Ingrese n: "); int n = entrada.nextInt();
int mayor = 0;
int i = 0;
do {
i++;
System.out.println("Ingrese un número: "); int numero = entrada.nextInt();
if (numero > mayor) { mayor = numero; }
} while (i<n);
System.out.println("El mayor de n números es: " + mayor);
}
A
Estructura de una Clase
A
Estructura de una Clase
1.- Creamos el proyecto: CreacionClase
A
Estructura de una Clase
3.- Adicionamos una clase Java (Java Class): SerHumano, donde definiremos
los Atributos, métodos para acceder y asignar valores y el método constructor
A
Estructura de una Clase
4.- En la definición de clase creamos 3 atributos: Nombre, Color de Ojos, edad y
una variable Static planeta con el valor: “TIERRA”
A
Estructura de una Clase
5- Creamos el método constructor para nuestra clase, enviado variables para
asignar a Los atributos de la clase
A
Estructura de una Clase
6.- Creamos los métodos getters y setter para cada uno de los atributos creados para
nuestra clase
A
Estructura de una Clase
7.- Adicionamos un método que nos permita visualizar los atributos de la clase creada y nos
muestre en una variable String
A
Estructura de una Clase
8.- Adicionamos un nuevo paquete: mi.clase.principal, donde crearemos la clase Prueba, la
cual contiene a nuestra función principal (main)
A
Estructura de una Clase
9.- Instanciamos dos objetos de la clase SerHumano: refSH1 y refSH2 a través del método
constructor
A
Estructura de una Clase
10.- Mostramos los valores de los dos objetos creados a través del
método:
verCaracteristicas
A
Arreglos de tipo primitivo de una sola dimensión: Sintaxis
A
String[ ] nombre = new String[2];
Arreglos Bidimensionales - Declaración
• Declaración de arreglo bidimensional:
tipoDato [ ][ ] nombreDelArreglo;
Ejemplo 1:
Declaración arreglo de objetos.
Estudiante [ ] arAlumnos;
0 null
1 null
2 null
3 null
A
Ejemplo Asignación
Ejemplo 1:
Creación de objetos y asignación a posiciones del arreglo.
arAlumnos
Nombre: “Juan”
0 Edad: 20
A
Bloque for:each
Ejemplo:
A
Herencia Simple
Vehículo
# numSerie: int
# color:String
Barco Coche
- longAncla: float - capCilindro: float
A
Herencia Simple - Constructores
Ejemplo 1:
Ejemplo 2:
A
Clase Abstracta
• Una clase abstracta es una clase de la que no se pueden crear objetos, pero puede
ser utilizada como clase padre para otras clases.
• Declaración:
A
Interfaces
Colección de métodos abstractos, los cuales solo tienen declaración y no
implementación.
Los métodos serán implementados por una o mas clases.
Para crear una interface, se utiliza la palabra reservada «interface» en
lugar de class. La interface puede definirse public o sin modificador de
acceso
Una interface puede también contener atributos, pero estos son siempre
static y final.
Todos los métodos que declara una interface son siempre public.
A
Diferencia entre clase Abstracta e Interface
A
Herencia Múltiple
● Una clase puede implementar varias interfaces, pero sólo puede
tener una clase ascendiente directa
● Contaminación de una interfaz. Cuando se añade un método a una
clase base solo porque una de sus derivadas lo necesita.
A
Declaración de una Interface
Sintaxis:
public interface IdentificadorInterfaz {
// Cuerpo de la interface . . .
}
<<interfaz>
Modificacion
Acumulador
- valor int
NOTA: no incluye ni la declaración de variables de instancia ni la implementación de los métodos (sólo las cabeceras).
A
Implementación de una Interface en una clase
Ejemplo:
Definamos ahora la clase Acumulador.
<<interfaz>
Modificacion
A
Jerarquía entre Interface
Ejemplo:
Factura
- TotalSinIGV: double
- IGV: double <static><final>
+ SinIGV() : double
+ ConIGV() : double
+ AsignaValor(double): void
+ Rebaja(double): void
A
Generecidad en Java
Las clases genéricas se definen para:
Otorgan seguridad de tipo en tiempo de compilación
Elimina la necesidad de “castear”
Otorgan la habilidad de crear colecciones homogéneas
Permite a los programadores implementar algoritmos
genéricos que trabajen con colecciones de diferente tipo,
pueden ser personalizables, y son tipos seguros y fáciles de leer.
A
Generecidad en Java
Declaración de una clase genérica:
Convención de Parametrización:
T : es el parámetro genérico: clase indeterminada de objetos sobre la
que opera ClaseGenérica.
E: tipo del elemento en una lista, cola, ... (muy usado en las Java Collections)
N: Numero
A
Generecidad en Java
Ejemplo de clase genérica
// Almacén genérico
A
Ejemplo de uso de clases Genéricas
public static void main (String[] args) {
// crea dos objetos
Double d=new Double(5.0);
Coche c=new Coche("ibiza",Color.ROJO);
// crea un almacén de coches
Almacen<Coche> ac=new Almacen<Coche>();
// crea un almacén de doubles
Almacen<Double> ad=new Almacen<Double>();
// almacena objetos
ac.almacena(c);
ad.almacena(d);
ac.almacena(d); // ¡¡error de compilación!!
// obtiene los contenidos de los almacenes
Coche c1=ac.obtiene();
Double d1=ad.obtiene();
} A
Definición de Excepciones
Las excepciones son errores que se generan en momento de ejecución de un
programa JAVA, los cuales se manejan usando los bloques try, catch y finally
A
Creación de nuevas Excepciones
Paso 1: crear la clase que va a manejar la excepción, deriva de la clase Exception. Adicionar un constructor
con un parámetro que es el mensaje a mostrar
A
Creación de nuevas Excepciones
Paso 2: Crear el método que va a manejar la excepción que “lance” la excepción
A
EJERCICIOS
T
Ejercicio 1: Sistema de Gestión de Biblioteca
Crea un sistema para gestionar una biblioteca. Debes tener clases como
Libro, Autor, Usuario, Biblioteca y Prestamo. Utiliza herencia para diferentes
tipos de libros (novela, ensayo, etc.) y polimorfismo para manejar diferentes
tipos de usuarios (estudiante, profesor, etc.). Implementa genericidad para
almacenar colecciones de libros y usuarios. Utiliza excepciones para manejar
errores como libros no disponibles o usuarios que no pueden tomar
prestados.
* Complemente con métodos para buscar libros por título, autor o tema,
prestar y devolver libros, y generar informes de préstamos.
T
Solución:
T
T
T
T
T
Ejercicio 2: Juego de Rol con Habilidades
T
Ejercicio 3: Sistema de Reservas de Hotel
T
Ejercicio 4: Aplicación de Dibujo con Figuras Geométricas
T
Ejercicio 5: Sistema de Gestión de Empleados
T
¿Qué se logró?
C
Referencias