domingo, 26 de septiembre de 2010

Sistema de mensajería instantánea tipo MSN

Las clases son:
Clases
- Usuario
                Descripción: Datos principales de cada usuario.
                Atributos:
                • Id del Usuario
                • Nickname
                • Nombres
                • Apellido Paterno
                • Apellido Materno
                • Correo
                • Contraseña
                • Imagen para mostrar
                Métodos:
                • Alta de Usuario
                • Modificación de Usuario
- Contactos
                Descripción: Los contactos de cada usuario.
                Atributos:
                • Id del Usuario
                • Id de usuario del Contacto
                • Grupo al que pertenece.
                • Admisión del usuario (bloqueado)
               Métodos:
                • Alta del contacto.
                • Baja del contacto.
                • Modificación del grupo del contacto.
- Status usuario
                Descripción: Status predefinido del usuario.
                Atributos:
                • Id del usuario
                • Id del status
                Métodos:
                • Modificación del status.
- Catalogo Status
                Descripción: Diferentes status que puede tener un usuario.
                Atributos:
                • Id del status
                • Descripción del status
- Conversación
                Descripción: Conversaciones de los usuarios.
                Atributos:
                • Id del Usuario
                • Id de usuario del contacto
                • Fecha
                • Mensaje
                Métodos:
                • Alta del mensaje.
                • Baja del Mensaje (en el caso que no se guarda historial.)
- Grupos
                Descripción: Grupo de contactos del usuario.
                Atributos:
                • Id del grupo
                • Id del usuario
                • Descripción del grupo
                Métodos:
                • Alta del Grupo.
                • Modificación del Grupo.
                • Baja del Grupo.
- Iconos
                Descripción: Iconos con los que cuenta el usuario.
                Atributos:
                • Id del usuario
                • Icono
                Métodos:
                • Alta del icono.
                • Baja del icono.
                • Modificación del icono.
- Fotos compartidas
                Descripción: fotos que tiene compartidas el usuario.
                Atributos:
                • Id del usuario.
                • Id de usuario del contacto.
                • Foto.
                Métodos:
                • Alta de la foto.
                • Baja de la foto.

lunes, 20 de septiembre de 2010

Chapter 4 - Classes and Methods

Preguntas

- Qué es una variable de instancia?
Una variable interna gestionada por una instancia.

- ¿Cuál es el significado de los modificadores de final y estático en Java? ¿Cómo estas dos características se combinan para formar una constante simbólica?
El modificador de final significa que los datos del campo no pueden ser modificados.Y estatico significa uno por cada clase,  no una para cada objeto, no importa cuántas instancia de una clase pueden existir. Combinadas significa una variable única que  no puede cambiar, es decir, una constante.

- ¿Qué significa el término público? ¿Qué significa el término privado?
Son los modificadores de visibilidad. si es público puede ser usado fuera de la definicion de la clase y si es privado solo puede ser usado dentro de la clase.

- ¿Qué es un constructor?
El constructor es un método especial que tiene el mismo nombre que la clase y se utiliza para inicializar los campos de datos  en un objeto. Los constructores son uno de los aspectos más importantes de una definición de objeto y por lo tanto debería  aparecer muy cerca de la cima de una definición de clase.

-¿Qué es un método de acceso? ¿Cuál es la ventaja de utilizar el metodo de acceso en lugar de proporcionar acceso directo a un campo de datos?
Un método que no hace más que devolver el valor de un campo de datos. La ventaja de utilizar este metodo en lugar de proporcionar acceso directo es que hace que los datos de capo sean de solo lectura.

- ¿Qué es un mutador o método setter?
Es un metodo que su objetivo es simplemente establecer un valor.

- ¿Cuáles son algunas directrices para seleccionar el orden de las funciones de una clase
definición?

• Las características importantes deben ser enumerados al principio de la definición de clase, las características menos importantes que figuran más adelante.
 •Los constructores son uno de los aspectos más importantes de una definición de objeto, y por lo tanto debería aparecer muy cerca de la cima de una definición de clase.
• La declaración de métodos deben ser agrupados de modo que se facilite con rapidez encontrar el cuerpo asociados con un selector de mensaje dado. Maneras de hacer esta lista incluye los métodos en orden alfabético, o agrupación de métodos su propósito.
• Los campos de datos privadas son en su mayoría sólo importante para el desarrollador de la clase. Ellos debería aparecer cerca del final de una definición de clase.

- ¿Qué es un campo de dato inmutable?
Significa que una vez establecido el valor del campo de datos no se puede cambiar posteriormente.

- ¿Qué es un nombre completo?
Proporciona tanto el nombre de clase y el nombre del método que se está definiendo.

- ¿Qué es una clase interna o anidada?
Una clase interna en Java está vinculado a una instancia específica de la clase que rodea (la instancia en que fue creado), y se permite el acceso a los campos de datos y métodos de este objeto. Una clase anidada en C + + es simplemente un dispositivo de nomenclatura, que restringe la visibilidad de los rasgos asociados con el interior clase.

Chapter 3 - Object-Oriented Design

Preguntas

-¿Cuáles son las características principales del diseño basado en la responsabilidad?
Es un diseño orientado a objetos, que esta impulsado por un enfasis en el comportamiento
en todos los niveles de desarollo.En este diseño se deleega la resposabilidad a alguien
mas. Y se vuelve muy importante la ocultación de información.

- Cuales son las diferencias entre programar en la pequeña y programar en la grande?
En la programacion en la pequeña el codigo es desarollado por un solo programador o un
equipo muy pequeño y en la grande el codigo es desarrollado por un equipo grande; a
menudo este equipo consiste en gente con diferentes habilidades. Otra diferencia es que
en la programacion en la pequeña el principal problema en el proceso de desarrollo es el
diseño y desarrollo de algoritmos para resolver el problema y en la programación en la
grande el principal problema es la gestión de datos y la comunicación de información
entre diversas partes del proyecto.

- Que es un escenario?
Un escenario es el guión para descubrir el comportamiento fundamental del sistema y
validar la implementacióm de los requerimientos.

- Cuales son los elementos básicos de un componente?
Un componente es una entidad abstracta que puede realizar tareas o cumplir con algunas
responsabilidades. Los elementos básicos de un componente son un pequeño conjunto bien
definido de responsabilidades y debe interactuar con otros componentes para la medidad
minima posible.

- ¿Qué es una tarjeta de CRC? ¿Qué significan las letras?
CRC significa Componente, Resposabilidad y Colaborador. Es una pequeña tarjeta de indice que nos sirve para representar componentes. Tienen escrito en la cara de la tarjeta el nombre del componente de software, la responsabilidad del componente y los nombres de otros componentes con los que deben interactuar.

- ¿Qué es el qué / quién ciclo?
Primero el equipo de diseño identifica que actividad realizar despues y inmediatamente
despues identificar quien realizara la acción.

- Porque el manual de usuario debe desarrollarse antes de que el codigo inicie?
Para poder entender bien el punto de vista del usuario; asi podemos estar seguros de que
la concepción del equipo de desarrollo coincide con la concepción del cliente.

- ¿Cuáles son las principales fuentes de cambio que se puede esperar durante el curso de
la vida de la mayoría de aplicaciones de software de larga vida?
Interfaces, formatos de comunicación y la producción de formatos.

-¿Qué información es transmitida por un diagrama de interacción?
La secuencia de eventos durante un escenario.

- ¿Cuáles son los principios de Parnas?
• Debe proporcionarse al usuario toda la información necesaria para usar un módulo correctamente y nada más.
• Debe proporcionar al implementador toda la información necesaria para completar el módulo y nada más.

- ¿Qué es la prueba de integración?
Es la prueba que se tiene que realizar hasta que el sistema este funcionando como se  desea.

- Qué es el mantenimiento del software?
Son las actividades posteriores a la entrega de la versión inicial de un sistema de  trabajo.

domingo, 19 de septiembre de 2010

Chapter 2 - Abstraction

Preguntas

- Que es abstracción?
Consiste en la extracción de las propiedades fundamentales de un concepto. Representa ideas, conceptos, y propiedades  generales sin la atención a detalle. Se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" .

- Da un ejemplo de como la abstracción es usada en la vida real.
Un carro es un objeto y las propiedades del carro serían el color, el modelo o la marca. Y los metodos serian ponerse en marcha, parar o aparcar.

- Que es el ocultamiento de Información?
El ocultamiento de información es la omisión deliberada de datos en el desarrollo de una representación abstracta.

- Da un ejemplo de como la ocultación de información es usada en la vida real.
Dentro de una empresa, a los empleados no se lres dice toda la informacion respecto a la misma, ni se les comunica de todos los procesos que se dan en ella; de esta forma los objetos no siempre muestran toda su información.

- Qué significan los términos cliente y el servidor decir cuando se aplica a programas orientados a objetos?
La vista desde el lado del cliente y la vista desde el lado del servidor. Objetos que estan prestando un servicio.

- ¿Cuál es la diferencia entre una interfaz y una implementación?
Una interfaz solo define lo que un sistema esta designado a hacer y la implementacion te dice como se esta realizando la tarea asignada. .

- Como facilita el intercambio, el enfasis en la encapsulacion y la identificacion de las interfaces?
Al dividir un sistema en partes, la interacción entre las partes se mantiene al mínimo.

- ¿Cuáles son las características básicas de la composición como una técnica para crear sistemas complejos a partir de elementos simples?
La idea clave es permitir que el mecanismo de combinación sea usado tanto en las nuevas formas como en las formas primitivas originales. Por ejemplo las expresiones regulares.

- Qué objetivo motiva a la colección de patrones de software?
Documentar una solución probada a un problema para que los futuros los problemas pueden ser más fáciles de manejar de una manera similar.

- Qué idea clave se realizó por primera vez para el desarrollo de procedimientos como la abstracción de programación.
Un análisis de muchos de los problemas en torno al uso de variables globales.

- Cómo es un tipo abstracto de datos diferente de un módulo?
Los módulos son una técnica de aplicación y el tipo de datos abstracto es un concepto más teórico.

Chapter 1 - Thinking Object-Oriented

Preguntas

- Cual es el significado original de la palabra paradigma?
Una lista de todas las formas que una palabra puede tomar. Como un ejemplo ilustrativo de la conjugación o declinación a la que pertenece

- Como interactuan los objetos entre ellos?
Haciendo peticiones mediante mensajes.


- En que son diferentes los mensajes a los procedure calls?
El mensaje tiene designado un receptor y en la llamada a un procedimiento no tiene designado un receptor. Y la interpertacion del mensaje pude variar con los diferentes receptores.

-¿Por qué el enfoque orientado a objetos, naturalmente, implica un alto grado de ocultamiento de información?
Reduce los riesgos en el desarrollo de software al superar la dependencia del código de una implementación aún incierta  gracias a una interfaz bien construida. Los clientes de la interfaz realizan sus operaciones a través  a través de ella de modo que si la implementación cambia, los clientes no tienen conocimiento de ello.


- Que es una clase?
Cada objeto es una instancia de una clase. Una clase representa simplemente una agrupación de objetos similares, tales como números enteros o listas.

- Que es una jerarquia de herencia de clases?
La manera en que las clases se organizan en una estructura de árbol de sus raíces por separado.

Ejercicios

3- Problema del mundo real. Agentes y responsabilidades.

Paty choca su auto y llega el transito al siniestro y le pone una multa por daños a municipio; la cual tiene que pagar en Tesorería. En Tesoreria le entrega el pago a un cajero.
Cuando choca le habla a la compañia de seguros y le contesta un operador el cual manda a un ajustador al lugar del siniestro. El ajustador le da la orden para arreglar el carro a Paty. Paty tiene que ir a la compañia de seguros a entregar la orden y el evaluador evalua los daños del auto y le da el pase para el taller mecanico. En el taller mecanico le arreglan el auto y se lo entregan cuando este listo.

Agentes:
- Paty
- Transito
- Operador
- Ajustador
- Evaluador
- Mecanico
- Cajero


Responsabilidades
- Paty:
• Entregar licencia y tarjeta de circulación al transito.
• Hablar a la compañia de seguros.
• Dar datos de seguro al operador.
• Dar poliza de seguros al ajustador de seguros.
• Acuidir a la compañia.
• Llevar el carro con el mecanico.
• Recoger el auto.
• Pagar multa.

- Transito:
• Pedir documentos a Paty.
• Aplicar multa.

- Operador:
• Pedir datos a Paty
• Mandar un ajustador al lugar de siniestro.

- Ajustador:
• Ir al lugar del siniestro.
• Pedir poliza a Paty.
• Realizar orden de reparación.

- Evaluador:
• Evaluar daños.
• Dar pase para taller mecanico.

- Mecanico
• Arreglar el auto.
• Avisarle a Paty cuando este listo.

- Cajero
• Cobrar multa.


 
1 - Ejemplo de herencia.