Definición y cumplimiento de responsabilidades
description
Transcript of Definición y cumplimiento de responsabilidades
Definición y cumplimiento de responsabilidades
Giovanni Hernández P.Nivel 4
Contrato entre dos sujetos: el que lo implementa y el que lo usa.
Necesito que me adicione este libro al catálogo. No he
verificado si ya existe ahí. El libro esta en buen estado
Ok. Yo lo adiciono si no esta en el catálogo. Si ya está le informo para que Usted decida que
hacer
Contrato de un método
Contrato de un método
Acuerdo entre quien
implementa el método y quien
lo usa
Método
Signatura del métodoSe establece
claramente
Condiciones para definir los resultados
Caso de estudio No 1
Club social
Caso de estudio No 1
• Comprensión de los requerimientos.• Comprensión del mundo del problema.• Definición de la arquitectura.
Comprensión de los requerimientos
Comprensión del mundo del problema
Un club tiene muchos socios
Un socio tiene muchas facturas Un socio puede
tener muchas personas
autorizadas
Solo se necesita el nombre de la
persona por lo cuál se representa con
String
Definición de la arquitectura
ClubSocioFactura
ClubTestSocioTest
Declaración de las clases
public class Club{}public class Socio{}public class Factura{}
Asignación de responsabilidades
Técnica del experto
El dueño de la información es el
responsable
Permite que otros tengan accedan y
puedan pedir cambios en la información
Tiene en cuenta las reglas del mundo
Técnicas de asignación de responsabilidades
Técnica de descomposición de
requerimientos
Asignación de resposabilidades
Caso de estudio• Quíen es el responsable de agregar un nuevo
socio al club?• Quíen es responsible de registrar una persona
autorizada por un socio?
Asignación de resposabilidades
Asignación de responsabilidades
Técnica de descomposición
de los requerimientos
Descomponer en sub-problemas
Identificar los pasos de invocación de
métodos
Asignar resposabilidades a las
clases
Técnicas de asignación de responsabilidades
Técnica del experto
Asignación de responsabilidadesNombre R1-Pagar una factura
Resumen Se requiere pagar la factura de un socio
Entradas
SocioFactura a pagarResultados
Se ha cancelado la factura seleccionada.
Asignación de responsabilidades
Descomposición del requerimiento1. Buscar si el socio que quiere pagar la factura
existe (buscar Socio)2. Si el socio existe, obtener todas las facturas
pendientes (darFacturas)3. Pagar la factura seleccionada (pagar Factura)
Asignación de responsabilidadesNombre R2-Registrar una persona autorizada
Resumen Se requiere registrar una persona autorizada de un socio
Entradas
SocioNombre autorizadoResultados
Se ha registrado una persona autorizada a un socio.
Asignación de responsabilidades
Descomposición del requerimiento1. Buscar si existe el socio a quien se le va agregar una
persona autorizada (buscarSocio)2. Dado el nombre de una persona, verificar si esa
persona ya pertenece al grupo de autorizados del socio (existeAutorizado)
3. Asociar con el socio una nueva persona autorizada (agregarAutorizado)
Asignación de responsabilidadesR2-Registrar una persona autorizada
Paso No 1. Localizar el socio buscarSocio()
Paso No 2. Verificar que la persona que se va a agregar no esta ya incluida
existeAutorizado()
Paso No 3. Agregar al socio el nombre dela persona autorizada
agregarAutorizado()
Taller no 1
Manejo de excepciones
Excepción en programación
Idacador de que existe un error en el
programa
Se produce cuando un método no termina
correctamente
Se produce por una acción inesperada en
un método
Programación
Codificación en programación
Manejo de excepciones
public void afiliarSocio(String cedula,String nombre) throws Exception{
…..}
Con esta declaración el método advierte a todos los que lo utilizan que puede producirse una excepción al utilizarlo.
Los métodos que hacen la invocación pueden capturar la excepción o dejarla.
Manejo de excepciones
Instrucción try-catchtry {
inst1;}catch (Exception e){
instr2;}
Si todo funciona bien no se ejecuta ninguna de las instrucciones catch.
Así se dice que cualquier excepción que se atrape se la asigna al objeto e de tipo Exception.
Se puede utilizar la variable e para pedir información sobre el error.
Manejo de excepciones• La construcción de un objeto Exception y la instrucción throw
public void afiliarSocio(String cd, String nm) throws Exception{
// Revisa que no exista un socio con la misma cédulaSocio s = buscarSocio( cd );if ( s == null){
//Se crea el objeto socioSocio nuevoSocio = new Socio( cd, nm );// Se agrega el socio al clubsocios.add( nuevoSocio);
}else{
// Si el socio ya existia lanza la excepciónthrow new Exception( “El socio ya existe” );
}}
Manejo de excepcionesFlujo de control en el manejo de excepciones
public void m1(){ try { o1.m2(); } catch( …) { }}
public void m2() throws Exception{ o2.m3();}
public void m3() throws Exception{ o3.m4();}
public void m4() throws Exception{ …}Lanza la excepción
Dejar pasar la excepción
Atrapa la excepción y se recupera
Contrato de un método
Contrato de un método
Acuerdo entre quien
implementa el método y quien
lo usa
Método
Signatura del métodoSe establece
claramente
Condiciones para definir los resultados
Contrato de un métodopublic void afiliarSocio( String cedula, String nombre ) throws Exception
Antes de ejecutar el método:1. La lista de socios ya fue creada2. La cédula no es null , ni vacía3. No se ha verificado si ya existe un socio con esa cédula.4. El nombre no es null ni vacío.
Después de ejecutar el método, el resultado debe ser:5. Todo funciona bien y el socio se afilia al club.6. Se produjo un error y se informó del problema con una excepción.
Contrato de un método
Precondiciones y postcondicionesPrecondición: Aquello que se exige para poder resolver un
problema planteado a un método (Condiciones que se imponen al hacer el método).
Pueden referirse a:1. El estado de un objeto que va a ejecutar el método.2. El estado de algún elemento del mundo con el cual el objeto
tiene asociación.3. Condiciones sobre los parámetros de entrada entregados al
método.
Taller No 2Identificar precondición de un método
Contrato de un método
Precondiciones y postcondicionesPostcondición: Descripción del resultado obtenido después de
ejecutar un método (Compromiso que asume al hacer el método).
Pueden referirse a:1. Una descripción del valor de retorno.2. Una descripcion del estado del objeto después de haber
ejecutado el método.
Taller No 3Identificar precondición de un método
Preguntas
1. ¿Un método debe verificar en algún punto las condiciones que hacen parte de la precondición? – No.
2. ¿Qué lugar ocupan las excepciones en los contratos? – Únicamente lanza la excepción.
3. ¿Qué incluir en la precondición? – Condiciones fáciles de garantizar
4. ¿Por qué es inconveniente verificar todo dentro de un método invocado? – Por eficiencia.
Documentación de los contratos con Javadoc
• Hace parte de la documentación del método• Generar automáticamente la documentación
con Javadoc
• El contrato se expresa como un comentario en javadoc /** … */, inmediatamente antes del método.
Documentación de los contratos con Javadoc
• El contrato empieza con una descripción general del método
/** * Este método afilia un nuevo socio al club
Documentación de los contratos con Javadoc
• Precondiciones relacionados con el estado del objeto que ejecuta el método. Allí se incluye únicamente las restricciones y las relaciones que deben cumplir los atributos y los objetos con los cuales tiene una asociación.
* <b>pre:</b>La lista de socios esta inicializada (no es null). </br>
Documentación de los contratos con Javadoc
• Postcondiciones que hacen referencia al estado del objeto después de la ejecución del método. Allí se deben describir la modificación de los atributos y objetos asociados que pueden esperarse después de su ejecución.
* <b>post:</b>Se ha afiliado un nuevo socio al club con los datos dados. </br>
Documentación de los contratos con Javadoc
• Parámetros se describe los parámetros de entrada y las precondiciones asociadas con ellos. Para cada parámetro se debe utilizar la etiqueta @param seguido de nombre del parámetro, una descripción y las suposiciones que el método hace sobre el.
* @param cedula Es la cédula del nuevo socio. Cedula != null, cedula != “”* @param nombre Es el nombre del nuevo socio. nombre != null, cedula != “”
Documentación de los contratos con Javadoc
• Retorno se describe el valor de retorno que se devolverá como si fuera una variable. Para el retorno se utiliza la etiqueta @return.
Para el ejemplo, no tiene retorno
* @return
Documentación de los contratos con Javadoc
• Excepciones se describe las excepciones que el método dispara. Se utiliza la etiqueta @throws seguida del tipo de excepción y una descripción de la situación en la que puede ser disparada.
* @throws Exception si un socio con la misma cédula ya estaba afiliado al club, dispara una excepción indicando que la nueva afiliación no se puede llevar a cabo.
Documentación de los contratos con Javadoc
/** * Este método afilia un nuevo socio al club * <b>pre:</b>La lista de socios esta inicializada (no es null). </br> * <b>post:</b>Se ha afiliado un nuevo socio al club con los datos dados. </br> * @param cedula Es la cédula del nuevo socio. Cedula != null, cedula != “” * @param nombre Es el nombre del nuevo socio. nombre != null, cedula != “” * @throws Exception si un socio con la misma cédula ya estaba afiliado al club,
dispara una excepción indicando que la nueva afiliación no se puede llevar a cabo.
*/
public void afiliarSocio( String cedula, String nombre) throws Exception{}
Taller No 4Identificar precondición de un método