Paso de Diagrama de clases a Java Parte 1 Clara Patricia Avella Ibáñez Tunja – Boyacá – Colombia Docente universitaria
[email protected]
De Diagrama de clases a Java Nuestro objetivo en este momento es pasar el siguiente diagrama de clases a código Java Recordemos que cada objeto de la clase Persona conoce a 1 objeto de la clase Vehículo. Esto se da porque cada persona tiene un vehículo (en nuestro ejemplo)
Por ahora veremos cómo se realiza el manejo de una relación de ASOCIACIÓN con una multiplicidad de 1
Vehiculo
Persona - docId: docId: String String - nombre: nombre: String - apellido: apellido: String String - fechaNac: fechaNac: String String - género: género: char char +crearPersona(docN:String, nombreN: +crearPersona(docN:String, String, apellidoN: String, fechaNacN:String, generoN: char, vehiculo:Vehiculo): void
tiene
Se lee: Una persona tiene 1 vehículo
1
- marca: marca: String - referen referencia: cia: String - modelo: modelo: int int - placa: placa: String String - color: color: String String - valor: valor: int int +crearVehiculo(marcaN:String, referenciaN: String, modeloN: int, placaN:String, colorN: String, valorN: int): void +cambiarValor(valorNuevo: +cambiarValor(valorNuevo: int): void +calcularImpuesto(void):: double +calcularImpuesto(void)
Observemos que la clase Persona conoce a la clase Vehiculo (por la dirección de la relación de asociación) pero la clase Ve Vehiculo hiculo no conoce a la clase persona
De Diagrama de clases a Java Como la clase Vehiculo no conoce a ninguna clase, veamos cómo se convierte a código Java esta clase (el nombre de la Clase y los atributos por ahora, porque los métodos los veremos más adelante)
public significa que la clase es pública (se puede tener acceso a ella desde otras clases de la aplicación)
class: indica a Java que es una clase
Vehiculo - marca: String - referencia: String - modelo: int - placa: String - color: String - valor: int
Clase en UML
public class Vehiculo{ private String marca; private String referencia; private int modelo; private String placa; private String color; private int valor; } Código java de la clase (sin incluir los métodos aún)
Nombre de la clase seguida de la llave de apertura al inicio
{ La clase debe tener una llave de cierre } al final para indicar que ahí termina el código de la clase
Declaración de clases en Java También debemos tener en cuenta los siguientes aspectos con el fin cumplir con estándares de codificación y buenas prácticas de programación Nombre
Atributos
Constantes
Operaciones ó
Métodos
Empieza con mayúscula Singular El nombre es el mismo del archivo físico con extensión .java Son variables de tipos básicos de datos o de otras Clases Empiezan con minúscula si es más de una palabra usar mayúscula en letra inicial de cada palabra diferente a la primera. Evitar usar _ (raya al piso) Tienen asignado un valor que no cambia durante la ejecución del programa. Se declaran con mayúscula sostenida Ejemplo static final int IVA_TIPO1 =16; Utilizan _ cuando está conformado su nombre por más de una palabra.
Segmento de código secuencial que ejecuta una tarea específica Conocidos como procedimientos o funciones en programación estructurada. Los métodos casi siempre se invocan con un objeto y aplica las instrucciones sobre el objeto con el cual se invoca. Pueden o no tener parámetros (los parámetros son valores que entran al método). Pueden o no retornar o devolver un valor
Declaración de Clases en Java Modificador de la clase public: visible por otras clases abstract: clase abstracta que no se puede instanciar .
Atributos
modificador class NombreDeLaClase {
modificador tipoDeDato nombreAtributo;
Accesibilidad de los atributos y constantes public: es accesible por cualquier objeto dentro y fuera de la clase. private: sólo es accesible dentro de la clase donde es declarada protected: es accesible dentro de la clase donde es declarada y desde las clases derivadas (subclases o clases hijas) cuando hay herencia. final : para definir constantes static: para declarar atributos , constantes o métodos de clase
Tipos de modificadores para atributos, constantes y métodos
modificador static final tipoDeDato nombre=valor;
Constantes
Métodos
Ver siguiente diapositiva }
Declaración de Clases en Java Métodos Accesibilidad de los métodos public: es accesible por cualquier clase. private: sólo es accesible dentro de la clase donde es declarado protected: es accesible dentro de la clase donde es declarado y desde las clases derivadas (subclases o clases hijas) cuando hay herencia. static: es un método de clase. No requiere de un objeto para invocarse. Tipo de dato que retorna el método Se escribe void si no retorna un valor
modificador tipoRetorno nombreDelMétodo (tipoDatoParametro(s) parametro(s) ) { cuerpo del método }
De Diagrama de clases a Java Tenga presente los siguientes aspectos
Ejemplos: calcularSalario() para un método telefonoCasa para un atributo
Si necesita declarar un atributo, variable o método que tenga más de dos palabras, escriba la letra inicial de la segunda o siguientes palabras con mayúscula
Java es sensible a mayúsculas y minúsculas, es decir, no es lo mismo escribir vehiculo que Vehiculo Evite incluir eñes o tildes en los nombres de clases, métodos, atributos, variables y constantes
No se deben utilizar palabras reservadas (ej: public, class, for, if, etc.) para nombrar clases, variables, atributos, constantes o métodos Lo único que debe empezar con mayúsculas en Java es el nombre de la clases, lo demás empieza con minúscula
Creación de proyectos en Java Ahora pasaremos el código en Eclipse
Una vez que esté ubicado en Eclipse, seleccione en el menú: File- New – Java Project
Creación de proyectos en Java Escriba el nombre que quiere asignarle al proyecto En este caso el proyecto que vamos a crear se llama
ejemplo1
Por default se asigna el JRE (Java Runtime Environment) que se instaló previamente.
Dé clic en Finish para confirmar la creación de proyecto
Creación de proyectos en Java En la ventana de Package Explorer aparece el proyecto con una carpeta llamada src (source ) donde se van a guardar los archivos .java o clases Aparece el JRE o biblioteca de Java que inc luye clases que ya vienen construidas en Java y que podemos utilizar en los programas que elaboremos Si no aparece la ventana Package Explorer, hágala visible haciendo clic en el menú superior: Window – show View - Package Explorer
Creación de proyectos en Java Ahora crearemos la clase Vehiculo que trabajado en este material
Hacemos clic en New y seleccionamos Class Nos ubicamos sobre el paquete src y hacemos clic derecho para que nos aparezca la ventana ubicada en el centro
Creación de clases en Java Aparece el paquete (carpeta) donde va a ubicarse el archivo con la clase a crear Si se quiere ubicar la clase en otro paquete dentro del paquete src, podemos escribir el nombre del paquete en este espacio. Si se deja en blanco crea la clase en un paquete al cual le asigna el mismo nombre del proyecto. En este caso le vamos a dar el nombre
unico
Se escribe el nombre de la clase. Para nuestro ejemplo Vehiculo Recuerde que los nombres de las clases inician con mayúscula Hacemos clic en Finish para confirmar la clase a crear
Se marcan los modificadores de la clase. Por default es public. Vamos a dejarlo así ya que la clase que vamos a crear es pública
Creación de clases en Java Observe: Se crea el paquete unico que configuramos en la ventana de creación de la clase
Dentro del paquete unico crea el archivo Vehiculo.java que corresponde al archivo físico que se genera al crer la clase En la ventana del centro aparece una pestaña con el código fuente generado al crear la clase
Creación de clases en Java Recordemos que esta es la clase Vehiculo definida en el diagrama de clases
Vehiculo - marca: String - referencia: String - modelo: int - placa: String - color: String - valor: int
Escribimos en Java los atributos de la clase (tengamos cuidado de dejar el código dentro de los corchetes de la clase {}
El símbolo menos – (modificador de atributos) del diagrama de clases se convierte en private en código java. Esto significa que a los atributos solo se pueden acceder directamente dentro de la clase Tenga presente que en el diagrama de clases UML se escribe primero el nombre del atributo y después de los dos puntos el tipo de dato, pero en Java primero va el tipo de dato y después el nombre del atributo, seguido de punto y coma ;
Creación de clases en Java Vehiculo
Persona - docId: String - nombre: String - apellido: String - fechaNac: String - género: char +crearPersona(docN:String, nombreN: String, apellidoN: String, fechaNacN:String, generoN: char, vehiculo:Vehiculo): void
Retomando el diagrama de clases, recordemos que la clase Persona conoce a la clase Vehiculo, es decir que la relación de asociación nos indica que cada objeto de la clase Persona tiene un objeto de la clase Vehiculo
tiene
1
- marca: String - referencia: String - modelo: int - placa: String - color: String - valor: int +crearVehiculo(marcaN:String, referenciaN: String, modeloN: int, placaN:String, colorN: String, valorN: int): void +cambiarValor(valorNuevo: int): void +calcularImpuesto(void): double
En código Java la relación de asociación se convierte en un atributo para la clase de la cual sale la relación, en este caso para la clase Persona. Veamos el código fuente de la clase Persona en la siguiente diapositiva
Creación de clases en Java De la misma manera que se creó la clase Vehiculo, se crea la clase Persona
Se escriben los atributos propios de clase con su modificador, tipo de dato y nombre
Como la relación de asociación se convierte en atributo, el tipo de dato del atributo será el nombre de la Clase con la cual se tiene la relación
El tipo del atributo es Vehiculo (nombre de la clase) El nombre del atributo en este caso es vehiculo (con minúscula porque es el atributo)
A la izquierda de la definición de atributos aparecen bombillos amarillos que significan Warning (mensaje de prevención). En este caso nos indica que no ha sido utilizado ninguno de los atributos definidos. Cuando adicionemos los métodos se soluciona. esto
Diagrama de objetos Para entender mejor lo que significa que un objeto tenga atributos que son a su vez objetos de otra clase,
pensemos en el ejemplo que estamos trabajando. La siguiente es una imagen que nos muestra los objetos que existirían en el mundo computacional si queremos representar a una persona con docId (documento de identidad): 345, nombre: Carlos, apellido: Suárez, fecha de nacimiento: 27/12/1990 y género: m, que a su vez tiene (es propietaria) el vehículo con marca: Renault, referencia: logan, modelo: 2009, placa: GRS123 y color: gris
Esta caja representa a un objeto llamado p de tipo Persona
p: Persona docId: “345” nombre: “Carlos” apellido: “Suárez” fechaNac: “27/12/1990” genero: ‘m’ vehiculo:
Esta caja representa a un objeto llamado v de la clase Vehiculo
v: Vehiculo marca“Renault” referencia: “Logan” modelo: 2009 placa: “GRS123” color: “Gris”
El objeto v de la clase Vehiculo es el dato que iría asignado al atributo vehiculo del objeto p de la clase Persona
Este es el DIAGRAMA DE OBJETOS de UML y nos ayuda a entender mejor los objetos involucrados en el modelo computacional y sus relaciones
Ejemplos – Diagrama de clases a java Fecha
Empleado - cedula: String - nombre: String - apellido: String - genero: char - salario: int
Fecha de ingreso
métodos public class Empleado{ private String cedula; private String nombre; private String apellido; private char genero; private int salario;
private Fecha fechaNac; private Fecha fechaIng; }
- dia: int 1 - mes: int - anio: int
Fecha de nacimiento
1
métodos public class Fecha{ private int dia; private int mes; private int anio; } Atributos propios de la clase
Atributos que salen de las relaciones
Ejemplos – Diagrama de clases a java Editorial
Libro - isbn: String - titulo: String - anio: int - precio: int
Pertenece a
métodos
public class Libro{ private String isbn; private String titulo; private int anio; private int precio;
private Editorial editorial; }
1
- codigo: int - nombre: String - anio: int
métodos
public class Editorial{ private int codigo; private String nombre; private int anio; }
Ejemplos Persona
Fecha Fecha de nacimiento
- dia: int - mes: int - anio: int
1
- cedula: String - nombre: String - apellido: String - genero: char
métodos ciudad de nacimiento
métodos
ciudad de residencia
1
Ciudad - codigo: int - nombre: String - indicativo: int
1
métodos public class Fecha{ private int dia; private int mes; private int anio; }
public class Ciudad{ private int codigo; private String nombre; private int indicativo; }
public class Persona{ private String cedula; private String nombre; private String apellido; private char genero;
private Fecha fechaNac; private Ciudad ciudadNac; private Ciudad ciudadRes; }