Sie sind auf Seite 1von 4

Diagrama UML, ingeniería a la inversa

En el siguiente programa se muestran tres clases:

 Prueba Circulo
 Punto2
 Circulo3

El objetivo de este ejercicio es realizar una ingeniería a la inversa, convirtiendo el código a


diagrama de clases UML, indicando:

 Nombre de las clases


 Atributos
 Propiedades
 Herencia
 Modificador de acceso en los caso para los atributos y propiedades que aplique indicando
de acuerdo a la siguiente simbología:
o “-“ Símbolo menos, si el modificador de acceso es private
o “+” Si es publico
o “#” Si es protected
 Si el método regresa un tipo de dato marcarlo en el diagrama de cómo:
o Nombre del método: tipo de retorno de dato ejemplo
o Supongamos que existe un método llamado regresa() , que retorna un tipo de
dato double y es protected, este se debe de ejemplificar en diagrama de la
siguiente forma:

Nombre de clase
Atributos
#regresa( ):double

A continuación se muestran las clases para diseñar el diagrama solicitado.


Diagrama UML, ingeniería a la inversa

Clase principal PruebaCirculo

import java.text.DecimalFormat;

import javax.swing.JOptionPane;

//Inicio de la clase principal

public class PruebaCirculo {

public static void main(String[] args) {

// crear instancia de objeto Circulo

Circulo3 circulo = new Circulo3( 37, 43, 2.5 );

// obtener coordenadas x-y y radio iniciales de Circulo3, como no existen usa a los del padre Punto2

String salida = "La coordenada X es " + circulo.obtenerX() +

"\nLa coordenada Y es " + circulo.obtenerY() +

"\nEl radio es " + circulo.obtenerRadio();

circulo.establecerX( 35 ); // establecer la nueva coordenada x

circulo.establecerY( 20 ); // establecer la nueva coordenada y

circulo.establecerRadio( 4.25 ); // establecer el nuevo radio

// obtener representación String del nuevo valor de circulo

salida += "\n\nLa nueva ubicación y radio de circulo son\n" + circulo.toString();

// dar formato a los valores de punto flotante con 2 dígitos de precisión

DecimalFormat dosDigitos = new DecimalFormat( "0.00" );

// obtener el diámetro del Circulo

salida += "\nEl diámetro es " + dosDigitos.format( circulo.obtenerDiametro() );

// obtener la circunferencia del Circulo

salida += "\nLa circunferencia es " + dosDigitos.format( circulo.obtenerCircunferencia() );

// obtener el área del Circulo

salida += "\nEl área es " + dosDigitos.format( circulo.obtenerArea() );

JOptionPane.showMessageDialog( null, salida ); // mostrar salida

System.exit( 0 );

}
Diagrama UML, ingeniería a la inversa

Clase Punto2

// La declaración de la clase Punto2 representa un par de coordenadas x-y.

public class Punto2 {


protected int x; // parte x de un par de coordenadas
protected int y; // parte y de un par de coordenadas

// constructor sin argumentos


public Punto2()
{
// la llamada implícita al constructor de Object ocurre aquí
}

// constructor
public Punto2( int valorX, int valorY )
{
// la llamada implícita al constructor de Object ocurre aquí
x = valorX; // no hay necesidad de validación
y = valorY; // no hay necesidad de validación
}
// establecer x en el par de coordenadas
public void establecerX( int valorX )
{
x = valorX; // no hay necesidad de validación
}

// devolver x del par de coordenadas


public int obtenerX()
{
return x;
}

// establecer y en el par de coordenadas


public void establecerY( int valorY )
{
y = valorY; // no hay necesidad de validación
}

// devolver y del par de coordenadas


public int obtenerY()
{
return y;
}

// devolver la representación String del objeto Punto


public String toString()
{
return "[" + x + ", " + y + "]";
}

}
Diagrama UML, ingeniería a la inversa

Clase Circulo3

// La clase Circulo3 hereda de Punto2 y tiene acceso a los miembros


// protected x e y de Punto2.

public class Circulo3 extends Punto2 {


private double radio; // el radio de Circulo3

// constructor sin argumentos


public Circulo3()
{
// la llamada implícita al constructor de Punto2 ocurre aquí
}

// constructor
public Circulo3( int valorX, int valorY, double valorRadio )
{
// la llamada implícita al constructor de Punto2 ocurre aquí
x = valorX; // no hay necesidad de validación
y = valorY; // no hay necesidad de validación
establecerRadio( valorRadio );
}

// establecer el radio
public void establecerRadio( double valorRadio )
{
radio = ( valorRadio < 0.0 ? 0.0 : valorRadio );
}

// return radio
public double obtenerRadio()
{
return radio;
}

// calcular y devolver el diámetro


public double obtenerDiametro()
{
return 2 * radio;
}

// calcular y devolver la circunferencia


public double obtenerCircunferencia()
{
return Math.PI * obtenerDiametro();
}

// calcular y devolver el área


public double obtenerArea()
{
return Math.PI * radio * radio;
}

// devolver la representación String de un objeto Circulo


public String toString()
{
return "Centro = [" + x + ", " + y + "]; Radio = " + radio;
}
}